Java, nesne yönelimli, sınıf tabanlı bir programlama dilidir. Dil, mümkün olduğunca az sayıda bağımlılık uygulamasına sahip olacak şekilde tasarlanmıştır. Bu dili kullanmanın amacı, geliştiricilerin her platform için kod yazma zorunluluğunu ortadan kaldırmaktır. Bir kez yaz ve her yerde çalıştır anlamına gelen WORA terimi genellikle bu dille ilişkilendirilir. Bu, bir Java kodunu derlediğimizde bayt kodunu (.class dosyası) elde ettiğimiz ve Java'yı desteklemeleri koşuluyla farklı platformlarda (tekrar derlemeden) çalıştırılabileceği anlamına gelir. 1995 yılında Java dili geliştirildi. Esas olarak web, masaüstü ve mobil cihazlar geliştirmek için kullanılır. Java dili sağlamlığı, güvenliği ve basitlik özellikleriyle bilinir. Bu, mümkün olduğunca az uygulama bağımlılığına sahip olacak şekilde tasarlanmıştır.
Tarih
Java dilinin çok ilginç bir geçmişi vardır. Green ekibi olarak bilinen Patrick Naughton, Mike Sheridan ve Jame Gosling, 1991 yılında Java'nın geliştirilmesine başladılar. Bu kişiler Java'nın mühendisleriydi. Sun Mikrosistemleri . 1996 yılında ilk halka açık uygulama Java 1.0 olarak yayınlandı. Java 1.0'ın derleyicisi, Arthur Van Hoff tarafından spesifikasyonlarına tam olarak uyacak şekilde yeniden yazıldı. Java 2'nin piyasaya sürülmesiyle birlikte yeni sürümler, çeşitli platformlar için oluşturulmuş çok sayıda farklı yapılandırmaya sahiptir. James Gosling'in aynı zamanda Java'nın babası olarak da bilindiğini belirtmekte fayda var.
Sun Microsystems 1997 yılında Java'yı resmileştirmek için ISO standart birimine başvurdu ancak süreç kısa süre sonra geri çekildi. Bir zamanlar Sun Microsystems, özel mülk yazılım statüsüne sahip olmasına rağmen Java uygulamalarının çoğunu ücretsiz olarak kullanıma sunmuştu.
Uygulama programları
Bir uygulama programının Java uygulamasında uygulanması aşağıdaki adımları içerir.
- Programın oluşturulması (kodun yazılması)
- Program derlemesi.
- Derlenmiş kodun yürütülmesi.
Burada JDK'nın (Java Development Kit) sisteme düzgün bir şekilde kurulması ve yolun da ayarlanması gerektiğini belirtmekte fayda var.
Programın Oluşturulması
Java programı bir Metin Düzenleyici (Notepad++ veya NotePad veya diğer düzenleyiciler de bu işi yapacaktır.) veya IDE (Eclipse, NetBeans, vb.) kullanılarak yazılabilir.
Dosya adı: TestClass.java
public class TestClass { // main method public static void main(String []args) { // print statement System.out.println('Hello World is my first Java Program.'); } }
Yukarıdaki kodu yazın ve dosyayı TestClass.dll adıyla kaydedin. Dosya şu özelliklere sahip olmalıdır: .java eklenti.
Programın Derlenmesi
Komut istemini açın ve yazın javac TestClass.java . javac Java derleyicisinin Java programını derlemek için harekete geçmesini sağlayan komuttur. Komutun ardından derlenmesi gereken dosyanın adını koymalıyız. Bizim durumumuzda bu TestClass.java . Yazdıktan sonra enter tuşuna basın. Her şey yolunda giderse bayt kodunu içeren bir TestClass.class dosyası oluşturulacaktır. Programda bir hata varsa derleyici bunu gösterecektir ve TestClass.class oluşturulmayacak.
Programın Çalıştırılması/Yürütülmesi
.class dosyası oluşturulduktan sonra şunu yazın: java Test Sınıfı Programı çalıştırmak için. Programın çıktısı aşağıda belirtilen konsolda gösterilecektir.
Çıktı:
Hello World is my first Java Program.
Java'nın Adı
Başlangıçta dile meşe adı verildi. Ancak dile yeni bir ismin verilmesine karar veren ekip, DNA, devrim niteliğinde, Sarsıntı, Dinamik, İpek vb. kelimeler önerdi. Tüm bu isimleri söylemesi eğlenceli ve hecelemesi kolaydı. Ancak önerilen isimlerde ekibin sahip olmak istediği dilin özü eksikti. James Gosling'e göre Java ve Silk en popüler seçeneklerden ikisiydi ve Java'nın benzersiz bir adı olduğundan çoğu kişi onu tercih etti.
Java aynı zamanda Endonezya'da kahvenin (Java Kahvesi olarak adlandırılır) üretildiği bir adanın adıdır. Java ismi James Gosling tarafından ofisinin yakınında kahve içtiği için seçilmiştir. Okuyucular Java'nın bir kısaltma olmadığını unutmamalıdır. Bu sadece bir isim.
Java'daki Terminolojiler
JVM (Java Sanal Makinesi): JVM, Java bayt kodunun yürütüldüğü çalışma zamanı ortamını kolaylaştıran spesifikasyondur. Birisi bu komutu her kullandığında java, JVM'nin bir örneği oluşturulur . JVM, bellek alanının, kayıt kümesinin, sınıf dosya formatının ve önemli hata raporlamanın tanımlanmasını kolaylaştırır. JVM'nin platforma bağlı olduğunu unutmayın.
Bayt Kodu: Java derleyicisinin .class dosyasını veya bayt kodunu oluşturmak için Java kodunu derlediği giriş bölümünde zaten tartışılmıştı. Birinin kullanması gerekiyor javac Java derleyicisini çağırmak için komut.
java'da örnek
Java Geliştirme Kiti (JDK): JRE (Java Çalışma Zamanı Ortamı), derleyici, Java belgeleri, hata ayıklayıcılar vb. dahil olmak üzere her şeyi kapsayan eksiksiz bir Java Geliştirme Kitidir. Bir Java programının oluşturulması, derlenmesi ve yürütülmesi için JDK'nın bilgisayarda yüklü olması gerekir.
Java Çalışma Zamanı Ortamı (JRE): JRE, JDK'nın bir parçasıdır. Bir sistemde yalnızca JRE kuruluysa kullanıcı yalnızca programı çalıştırabilir. Başka bir deyişle, yalnızca java komut çalışıyor. Bir Java programının derlenmesi mümkün olmayacaktır ( javac komut çalışmaz).
Çöp toplayıcı: Programcılar Java'daki nesneleri silemezler. Bunu yapabilmek için JVM'nin Çöp Toplayıcı olarak bilinen bir programı vardır. Çöp Toplayıcılar referans verilmeyen nesneleri hatırlar veya siler. Çöp Toplayıcı, bir geliştiricinin/programcının hayatını kolaylaştırır çünkü bellek yönetimi konusunda endişelenmelerine gerek kalmaz.
Sınıf yolu: Adından da anlaşılacağı gibi sınıf yolu, Java derleyicisinin ve Java çalışma zamanının yüklenecek .class dosyasını aradığı yoldur. Birçok dahili kütüphane JDK tarafından sağlanmaktadır. Ancak birisi dış kütüphaneleri kullanmak istiyorsa sınıf yoluna eklenmelidir.
Java'nın Öne Çıkan Özellikleri
Platform bağımsız: Java derleyicisi doğrudan .exe dosyasını oluşturmak yerine Java kodunu bayt koduna dönüştürür ve bu bayt kodu farklı platformlarda sorunsuzca çalıştırılabilir, bu da Java'yı platformdan bağımsız bir dil haline getirir. Bayt kodunu yürütmek için platforma bağlı olan JVM'nin sisteme kurulması gerektiğini unutmayın.
Nesneye Yönelik Programlama Dili: Nesneye yönelik programlama kavramı, nesneler ve sınıflar kavramına dayanmaktadır. Ayrıca nesne yönelimli programlamada mevcut olan çeşitli nitelikler vardır. Bunlardan birkaçına aşağıda değinilmiştir.
- Soyutlama
- Miras
- Polimorfizm
- Kapsülleme
Java dili ayrıca sınıf ve nesne kavramlarını da kapsamlı bir şekilde kullanır. Ayrıca yukarıda bahsettiğimiz tüm bu özellikler Java'da da mevcuttur ve bu da Java'yı nesne yönelimli bir programlama dili yapar. Java'nın nesne yönelimli bir programlama dili olduğunu ancak %100 nesne yönelimli olmadığını unutmayın.
Basit: Java basit bir dil olarak kabul edilir çünkü işaretçiler, çoklu kalıtımlar, açık bellek tahsisi veya operatör aşırı yüklemesi gibi kavramlara sahip değildir.
Güçlü:
Java dili çok sağlamdır. Sağlam kelimesinin anlamı güvenilirdir. Java dili, birçok hata kontrolünün mümkün olduğu kadar erken yapılmasını sağlayacak şekilde geliştirilmiştir. Bu nedenle bu dil diğer programlama dillerinde tespit edilmesi zor olan hataları tespit edebilmektedir. İstisna İşleme, çöp toplama ve bellek ayırma, Java'yı güçlü kılan özelliklerdir.
Güvenli: Arabellek taşması veya yığın bozulması gibi Java dilinde istismar edilmesi mümkün olmayan çeşitli hatalar vardır. Java dilinde işaretçilerin olmadığını biliyoruz. Bu nedenle sınır dışı dizilere erişim mümkün değildir. Birisi bunu yapmaya çalışırsa ArrayIndexOutofBound Exception ortaya çıkar. Ayrıca Java programlarının çalıştırılması İşletim Sisteminden tamamen bağımsız bir ortamda gerçekleşir, bu da bu dili daha da güvenli kılar.
Dağıtılmış: Dağıtılmış uygulamalar Java dilinin yardımıyla oluşturulabilir. Dağıtılmış uygulamalar oluşturmak için Kurumsal Java çekirdekleri ve Uzaktan Yöntem Çağırma kullanılır. Java programlarının dağıtımı, internet üzerinden birbirine bağlı bir veya daha fazla sistem arasında kolaylıkla gerçekleşebilir.
Çoklu iş parçacığı: Java dili çoklu iş parçacığını destekler. Çoklu iş parçacığı özelliği, programın iki veya daha fazla bölümünün aynı anda yürütülmesini destekler. Böylece CPU kullanımı maksimuma çıkar.
Taşınabilirlik: Java'nın platformdan bağımsız bir dil olduğunu biliyoruz. Böylece, bir sistemde oluşturulan bayt kodu, yürütülmek üzere başka herhangi bir platformda alınabilir, bu da Java'yı taşınabilir hale getirir.
Üst Düzey Performans: Java mimarisi, çalışma zamanı yükünü azaltacak şekilde oluşturulmuştur. Bazı yerlerde Java, kod talep esasına göre derlendiğinde JIT (Tam Zamanında) derleyicisini kullanır; burada derleyici yalnızca çağrılan yöntemleri derler ve böylece uygulamaların daha hızlı yürütülmesini sağlar.
Dinamik Esneklik: Java dili, bize mevcut sınıflara yeni yöntemler ve sınıflar ekleme özgürlüğü veren Nesneye Dayalı programlama paradigmasını takip eder. Java dili ayrıca C/C++ dillerinde bahsedilen ve genellikle yerel yöntemler olarak adlandırılan işlevleri de destekler.
SandBox'ın Yürütülmesi: Java programlarının farklı ortamlarda yürütüldüğü bilinen bir gerçektir; bu, kullanıcılara bayt kodu doğrulayıcıyı kullanarak temel sistemi etkilemeden kendi uygulamalarını yürütme özgürlüğü verir. Bayt kodu doğrulayıcı, kodu erişim ihlali açısından kontrol ettiği için ekstra güvenlik de sağlar.
Bir kez yazın, her yerde çalıştırın: Java kodu, herhangi bir makine mimarisinden tamamen bağımsız olan .class dosyasını veya bayt kodunu elde etmek için derleyici tarafından derlenir.
Derlenmiş ve Yorumlanmış Dil: Dillerin çoğu ya yorumlanmış dildir ya da derlenmiş dildir. Ancak Java dili söz konusu olduğunda, yorumlanan dilin yanı sıra derlenir. Bayt kodunu elde etmek için Java kodu derlenir ve bayt kodu, yazılım tabanlı yorumlayıcı tarafından yorumlanır.
Java'da Birkaç Program
Aşağıda birkaç temel Java programından bahsedilmiştir.
Programı - 1
Dosya adı: DemoClass.java
// Importing different classes import java.io.*; // Main class public class DemoClass { // main method public static void main(String argvs[]) { System.out.println('Welcome to javaTpoint.'); } }
Çıktı:
Welcome to javaTpoint.
Programı - 2
10/100,00
Dosya adı: AddMul.java
// Computing the sum and product of the two numbers public class AddMul { // main method public static void main(String argvs[]) { int a1; int a2; int add = 0; int prod = 0; a1 = 12; a2 = 14; add = a1 + a2; // addition prod = a1 * a2; // multiplication System.out.println('Sum = ' + add); System.out.println('Product = ' + prod); } }
Çıktı:
Sum = 26 Product = 168
Programı - 3
Dosya adı: ComputeAv.java
// A Java program to allow the user to input two numbers from the user and compute its average. import java.util.*; public class ComputeAv { // main method public static void main(String argvs[]) { double a1; double b1; double sum1 = 0; double avg1 = 0; Scanner scnr = new Scanner(System.in); System.out.println('Input the First Number: '); a1 = scnr.nextDouble(); System.out.println('Input the Second Number: '); b1 = scnr.nextDouble(); sum1 = a1 + b1; // computing the sum avg1 = sum1 / 2; // computing the average System.out.println('Average = ' + avg1); } }
Çıktı:
Input the First Number: 4 Input the Second Number: 5 Average = 4.5
Programı - 4
Dosya adı: FahrenheitCelsius.java
// A Java program that converts Celsius to Fahrenheit using formula // Fahrenheit = ((Celsius / 5) x 9 ) + 32 // import statement for taking input import java.util.Scanner; public class FahrenheitCelsius { // main method public static void main(String argvs[]) { double cel, far; Scanner scnr = new Scanner(System.in); System.out.println('Input the temperature in Celsius: '); cel = scnr.nextDouble(); far = ((cel / 5.0) * 9.0) + 32; System.out.println('Temperature in Fahrenheit is: ' + far); } }
Çıktı:
Input the temperature in Celsius: 15 Temperature in Fahrenheit is: 59.0
Programı - 5
Dosya adı: ÜçgenArea.java
// A Java program for computing the triangle's area using its three sides // using heron's formula. import java.util.Scanner; public class TriangleArea { // main method public static void main(String[] argvs) { int s1, s2, s3; double halfPeri, ar; Scanner scnr = new Scanner(System.in); System.out.print('Enter the value of triangle's three sides:'); // taking user inputs s1 = scnr.nextInt(); s2 = scnr.nextInt(); s3 = scnr.nextInt(); // computing half perimeter halfPeri = (s1 + s2 + s3) / 2; // computing area of the triangle ar = Math.sqrt(halfPeri * (halfPeri - s1) * (halfPeri - s2) * (halfPeri - s3)); System.err.println('Triangles Area: ' + ar); } }
Çıktı:
Enter the value of triangle's three sides: 15 16 17 Triangles Area: 109.98181667894016
Yukarıdaki Programlarda Kullanılan Çeşitli Anahtar Kelimelerin Açıklaması
//: Okuyucular için daha okunabilir hale getirmek amacıyla koda yorum eklemek için kullanılır. Derleyici, programı derlerken yorumları tamamen görmezden gelir. Çok satırlı yorum için şunu kullanırız: /* … */
ana() yöntemi: Programın en önemli metodu yürütmenin başladığı yerdir. Bu nedenle tüm mantığın ana yöntemde bulunması gerekir. Main() yöntemi mantığı içermiyorsa, o zaman başka bir yöntemde orada olacaktır, ancak bu yöntemin doğrudan veya dolaylı olarak main() yönteminden çağrılması gerekir.
sınıf: Java dilinde sınıf bildirmek için class anahtar sözcüğü kullanılır.
geçersiz: bu, işlevin veya yöntemin hiçbir şey döndürmeyeceği anlamına gelir.
System.out.println(): Konsoldaki ifadeleri, kalıpları vb. yazdırmak için kullanılır.
Dize argümanları[]: Giriş almak için kullanılan bir komut satırı argümanıdır.
halk: Erişim belirleyici bir anahtar kelimedir. Bir yönteme uygulandığında o yöntem herkes tarafından görülebilir. Diğer erişim belirleyici anahtar sözcükler şunlardır: özel, korumalı ve varsayılan.
Java.io'yu içe aktarın.*: Bu, pakette bulunan tüm sınıfların olduğu anlamına gelir java.io ithal edilmektedir. Java.io paketi, dosyalara veri yazmak ve okumak için çıkış ve giriş akışlarını kolaylaştırır. *hepsi anlamına gelir. Yalnızca belirli bir sınıfı içe aktarmak istiyorsanız * işaretini sınıfın adıyla değiştirin.
Sistem.in: Bizim durumumuzda genellikle bir klavye olan giriş veren cihazdan karakterleri okumak için kullanılan giriş akışıdır.
statik geçersiz ana(): Statik anahtar kelime, sınıfın somutlaştırılması yapılmadan yönteme erişilebileceğini söyler.
Sistem çıkışı: System.in karakterleri okumak için kullanıldığı gibi, System.out da programın sonucunu bilgisayar ekranı gibi bir çıkış cihazında vermek için kullanılır.
çift, int: Farklı veri türleri, tamsayılar için int, double için double. Diğer veri türleri char, boolean, float vb.'dir.
açısal malzeme
println(): Yöntem konsoldaki metinleri gösterir. Yöntem, metni ekrana yazdırır ve ardından bir sonraki satıra geçer. Bir sonraki satırda ln kullanılır. İmlecin bir sonraki satıra geçmesini istemiyorsak print() yöntemini kullanın.