Arkadaşlar merhaba,
Bu yazıda java paket import işlemlerine bakacağız.
Java api'sinde bulunan binlerce sınıfı ayırt etmek ve gruplamak için paket yapısını kullanılır.
package Chapter1;
import java.util.Date;
import java.util.Random;
import java.sql.*;
public class İmportExample {
Date date;
java.sql.Date sqlDate; // yada
java.util.Date date1;
java.sql.Date sqlDate1; // gibi
public static void main(String[] args) {
Random r = new Random();
System.out.println(r.nextInt(10));
}
}
Java dünyasında özel bir paket vardır. java.lang paketi Bu paket, otomatik olarak içe aktarıldığı için özeldir.Ekstra olarak eklenmesi gereksizdir.
import java.lang.System;
import java.lang.*;
// otomatik olarak ekleneceklerdir.
Aynı paketteki sınıflar genellikle birlikte alınır. Bir paketteki tüm sınıfları içe aktarmak için bir kısayol kullanabilirsiniz.Bu şekilde java.util paketi altında ki tüm sınıfları import edebiliriz.
import java.util.*;
import java.util.Date;
import java.sql.*;
// bu şekilde çalışacaktır.
Bir sınıf adını açıkça içe aktarırsanız, mevcut tüm joker karakterlere göre öncelikli olur. Java, "Programcı gerçekten java.util.Date sınıfını kullanmamı istiyor" diye düşünüyor.Fakat 2'si birden eklenirse;
import java.util.Date;
import java.sql.Date;
Bu durumda da hata alınır.İki varsayılan olamayacağı için derleyici size şunları söyler:
error: reference to Date is ambiguous Date date; ^ both class java.util.Date in java.util and class java.sql.Date in java.sql match
Bazen Date'i iki farklı paketten kullanmak istersiniz. Bu olduğunda, içe aktarmada kullanmak üzere birini seçebilir ve özel olduğunu belirtmek için diğerinin tam nitelikli sınıf adını [paket adı, nokta (.) ve sınıf adı] kullanabilirsiniz.
Örneğin;
Date date;
java.sql.Date sqlDate; // yada
java.util.Date date1;
java.sql.Date sqlDate1; // gibi
Varsayılan olarak, javac komutu, derlenmiş sınıfları kaynak kodla aynı dizine yerleştirir.Ayrıca sınıf dosyalarını farklı bir dizine yerleştirme seçeneği sunar. -d seçeneği bu hedef dizini belirtir.
javac -d classes packagea/ClassA.java packageb/ClassB.java
Programı çalıştırmak için sınıf yolunu belirtirsiniz, böylece Java sınıfları nerede bulacağını bilir. Kullanabileceğiniz üç seçenek vardır. Bunların üçü de aynı şeyi yapar:
java -cp classes packageb.ClassB
java -classpath classes packageb.ClassB
java --class-path classes packageb.ClassB
Jar Dosyası ile Derleme
Bu teknik, sınıf dosyaları başka bir yerde veya özel JAR dosyalarında bulunduğunda kullanışlıdır.
Windows için;
java -cp ".;C:\temp\someOtherLocation;c:\temp\myJar.jar" myPackage.MyClass
MacOS / Linux için;
java -cp ".:/tmp/someOtherLocation:/tmp/myJar.jar" myPackage.MyClass
Jar Dosyası Oluşturma
Bunu yapmak için jar komutunu kullanırsınız. En basit komutlar, geçerli dizindeki dosyaları içeren bir jar oluşturur. Her seçenek için kısa veya uzun yazım şeklini kullanabilirsiniz.
jar -cvf myNewFile.jar .
jar --create --verbose --file myNewFile.jar .
// Dizin göstererek
jar -cvf myNewFile.jar -C dir .
Yeni bir jar dosyası oluşturmak için.
-c
--create
JAR dosyalarıyla çalışırken ayrıntıları yazdırır.
-v
--verbose
Jar dosyası ismi.
-f <fileName>
--file
<fileName>
JAR'ı oluşturmak için kullanılacak dosyaları içeren dizin;
-C <directory>
Çıktıyı özetler;
-s
-summary
Bir modülün ayrıntılarını açıklar.
-d
--describe-module
Bir program çalıştırmadan gözlemlenebilir modülleri listeler.
--list-modules
Programı çalıştırırken modülleri gösterir.
--show-module-resolution
Modüler Olmayan Kodun Derlenmesi ve Çalıştırılması
Derlenmesi ;
javac -cp classpath -d directory classesToCompile
Çalıştırılması;
java -cp classpath package.className
java -classpath classpath package.className
java --class-path class path package.className
Bir Modülün Compile Edilmesi
javac -p moduleFolderName -d directory classesToCompileIncludingModuleInfo
javac --module-path moduleFolderName -d directory classesToCompileIncludingModuleInfo
Modülün Çalıştırılması;
java -p moduleFolderName -m moduleName/package.className
java --module-path moduleFolderName --module moduleName/package.className
Burada temel modül komutlarına değinsemde genel olarak yazılarda modül sistemi ile ilgili bir yazı paylaşmayı düşünmüyorum.
Java 9 ile gelen modül sistemini daha detaylı öğrenmek için tabi ki öncelikle java dökümantasyonlarına bakmanızı tavsiye ederim.
Aşağıdaki adreslerden de okuyabilirsiniz.
Umarım faydalı olmuştur.
Görüşmek üzere.