Java 11から単一ソースファイルのJavaプログラムをコンパイルなしで直接javaコマンドで実行できるようになっているので、紹介動画を作りました。
例えば次のようなJavaプログラムをHello.javaという名前で保存したとします。
public class Main { public static void main(String[] args) { System.out.println("Hello Java!"); } }
このプログラムはファイル1つだけで完結しているので、javaコマンドで次のように実行できます。
>java Hello.java Hello Java!
ここで、クラス名はMainですが、ファイル名がHello.javaになっていることに注意してください。
javacでコンパイルしようとするとエラーが出ます。
>javac Hello.java
Hello.java:1: エラー: クラス Mainはpublicであり、ファイルMain.javaで宣言する必要があります
public class Main {
^
エラー1個
拡張子が.javaではないファイルでも実行できます。
その場合は--sourceでソースコードのバージョンを指定する必要があります。
C:\Users\naoki\Desktop>java --source 17 Hello.txt Hello Java!
LinuxやMacなどUNIX系のシステムではShebangという仕組みでJavaのソースファイルをコマンドのように実行できます。
次のようなファイルをhelloという名前で作ります。
#! /usr/bin/java --source 11 public class Main{ public static void main(String[] args) { System.out.println("Hello Java!!!"); } }
最初の行で#!から始めてjavaコマンドのフルパスと--sourceでのバージョン指定を書きます。
chmodで実行権限をつけると、コマンドのように実行できます。
# chmod +x hello # ./hello Hello Java!!!
「プロになるJava」では「複数のソースファイルがからむときはコンパイルが必要」と、javacがいる場合を特別な場合として説明しています。
わざわざコマンドラインでjavacするのはソースファイル1つの場合だし。
