8 Ekim 2018 Pazartesi

javac komutu - Java 11 ile Kalktı

Giriş
Derleyici. Ancak kod derlerken optimizasyon yapmaz. Bu komut Java 11 ile kalktı. Artık sadece java komutunu kullanarak dosyaları derleyip, çalıştırabiliriz.

-add-exports seçeneği
Şöyle yaparız.
javac --add-exports java.security.jgss/sun.security.krb5.internal.ktab=ALL-UNNAMED
  your-class
-classpath seçeneği
Şöyle yaparız.
javac -classpath /lib/* Main.java
Bulunulan dizin ve src dizinini de kullanmak için şöyle yaparız
javac -cp lib/jar1.jar:lib/jar2.jar:.:src src/StockTradeGenerator.java
-d seçeneği
Açıklaması şöyle
Sets the destination directory for class files. If a class is part of a package, then javac puts the class file in a subdirectory that reflects the package name and creates directories as needed.
.class dosyalarının hangi dizinde oluşturulacağın belirtir.
Örnek
Tüm kaynak kodlarımız src dizininde olsun. bin dizinine çıktı vermek için şöyle yaparız.
mkdir bin/
javac -d bin/ src/Test.java src/HelloWorld.java
-g:none seçeneği
Açıklaması şöyle
if it's compiled with -g:none (without any debugging information), then the line numbers will not be included, getLineNumber() always returns -1
-g:source seçeneği
Örnek ver

-g:vars seçeneği
Örnek ver

--release seçeneği - Java 9 İle Geliyor
Yani eski JDK'yı kurmaya gerek kalmadan, daha eski bir Java sürümüne göre derleyip çalıştırabilmeyi sağlıyor. 

--source 8 --target 8 kullanımı yerine artık --release seçeneğini kullanmak gerek. Açıklaması şöyle. 
We defined a new command-line option, --release, which automatically configures the compiler to produce class files that will link against an implementation of the given platform version. For the platforms predefined in javac, --release N is equivalent to -source N -target N -bootclasspath <bootclasspath-from-N>.
Açıklaması şöyle
For JDK N and --release M, M < N, signature data of the documented APIs of release M of the platform is needed. This data is stored in the $JDK_ROOT/lib/ct.sym file, which is similar, but not the same, as the file of the same name in JDK 8. The ct.sym file is a ZIP file containing stripped-down class files corresponding to class files from the target platform versions.
Örnek
Şöyle yaparız. Burada 
--release ile target olarak JDK 21 belirtiliyor
--enable-preview ile henüz tam bitmemiş preview aşamasında olan dil özelliklerinin de etkinleştirilmesi isteniyor
javac --release 21 --enable-preview BlackJackHelloWorld.java
target seçeneği
Daha eski bir sürüme göre derlemek için şöyle yaparız.
% javac -target 1.6 <whatever you want to compile>

Hiç yorum yok:

Yorum Gönder