در JDK 11، جاوا قابلیت اجرای مستقیم برنامههای منبع کد تکفایلی را با ابزار java معرفی کرد. از JDK 22 به بعد این قابلیت برای چندفایلی هم در دسترس است — بدون نیاز به کامپایل صریح کد منبع. این کار با فراخوانی خودکار کامپایلر توسط ابزار java و ذخیره کد کامپایلشده در حافظه انجام میشود. این یک راه عالی برای یادگیری جاوا یا کاوش ویژگیهای جدید API جاوا است، بدون اینکه نیاز باشد مراحل کامپایل و سپس اجرا را طی کنید.
برای اجرای یک برنامه منبع کد تکفایلی، اولین کلاس تعریفشده در فایل منبع باید دارای public static void main(String[]) باشد:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
از خط فرمان، HelloWorld را میتوانید اجرا کنید (با فرض اینکه نام فایل هم HelloWorld.java است):
$ java HelloWorld.java
آرگومانها هم مانند کلاس کامپایلشده عادی قابل ارسال هستند:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello " + args[0] + "!");
}
}
ارسال آرگومان به این شکل انجام میشود:
$ java HelloWorld.java Duke
در صورت نیاز، میتوانید چند کلاس را در یک فایل منبع تعریف کنید:
class Foo {
int value = 1;
}
class Bar {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
هنگام اجرا، خروجی:
Hello World!
از زمان انتشار JDK 22 که شامل JEP 458: اجرای برنامههای منبع کد چندفایلی بود، ابزار java اکنون میتواند برنامههای منبع کد چندفایلی را اجرا کند. این امکان انتقال تدریجی از برنامههای ساده تکفایلی به برنامههای پیچیدهتر را فراهم میکند.
ابزار java بهطور خودکار فایلهای منبع چندگانه را پیدا، کامپایل و بارگذاری میکند، به شرطی که مکان فایلهای منبع با ساختار Package کلاسهای import شده مطابقت داشته باشد:
import model.Person;
import service.PersonService;
public class Main {
public static void main(String[] args) {
// ...
}
}
کلاسهای model.Person و service.PersonService باید بهترتیب در زیردایرکتوریهای model و service نسبت به دایرکتوری کلاس Main وجود داشته باشند.
کلاسی که بخشی از هسته JDK باشد نیازی به اضافه شدن به Classpath ندارد. بنابراین این مثال که به کلاسهای Scanner و MatchResult ارجاع میدهد، فقط با ابزار java قابل اجراست:
import java.util.Scanner;
import java.util.regex.MatchResult;
public class HelloWorld {
public static void main(String[] args) {
int result = new Scanner(System.in())
.findAll("(\\d+)")
.map(m -> m.group(1))
.mapToInt(Integer::parseInt)
.sum();
System.out.println("Sum: " + result);
}
}
برای اجرا:
$ java HelloWorld.java 1 2 3
اما این مثال که به RandomUtils (بخشی از Apache Commons Lang) ارجاع میدهد، نیاز دارد که commons-lang.jar هنگام اجرا به Classpath اضافه شود:
$ java -cp commons-lang.jar HelloWorld.java 1 2 3
در سیستمعاملهای شبه Unix، یک برنامه منبع کد تکفایلی میتواند مانند یک اسکریپت بهعنوان فایل Shebang اجرا شود. در اولین خط فایل جاوا، path/to/java/home --source <version> را اضافه کنید:
#!/path/to/jdk/bin/java --source 22
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
فایل نباید پسوند .java داشته باشد و باید قابل اجرا باشد:
$ chmod +x Hello
$ ./Hello
اگر هیچ آرگومانی ارسال نکنید، خطای ArrayIndexOutOfBoundsException دریافت خواهید کرد.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://dev.java/learn/