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つの場合だし。