Java Platformu Neden Bağımsız Dildir?
Yayınlanan: 2021-02-08İçindekiler
Tanıtım
Java, doğuşundan bu yana diğer tüm programlama dilleri arasında büyük bir popülerlik kazanmıştır. Ve bu kadar büyük bir tepkinin nedeni, benzersiz özellikler sağlama yeteneğidir. Java sözdizimi neredeyse c++'a benzer olacaktır ancak c++'dan çok daha fazla özellik sağlar.
Nesne yönelimli programlamanın (OOP) mevcudiyeti, java'yı diğer tüm diğer dillerden zamanında öne çıkardı. Java özünde OOP kullanmak için geliştirildi ve en çok kullanılan dil olmasının nedenlerinden biriydi. Bu konsept, yeniden kullanılabilirliği, sorunsuz yürütmeyi artırır. Bu sırada aklımıza “neden bir nesne kullanmalıyız?” sorusu gelebilir.
Java'daki nesneler, benzer yöntemleri ve değişkenleri birbirine bağladığımız c dilindeki yapılara benzer. Bununla birlikte Java, kullanıcıyı nesneleri uygulamaya teşvik eden soyutlama, kapsülleme, kalıtım ve polimorfizm de sağlar.
Java, uygulama geliştirme, web geliştirme, yazılım araçları oluşturma gibi birçok alanda baskın bir rol oynamaktadır. Ayrıca, işleri kolaylaştıran zengin sayıda kütüphaneye sahiptir. Ayrıca, IDE'nin kullanılabilirliği, geliştiricilerin dikkatini çekmede çok önemli bir rol oynar. Eclipse, IntelliJ, NetBeans gibi IDE'ler birçok geliştirici tarafından sıklıkla kullanılmaktadır.
Pekala, şimdi gelelim tartışmamıza.
Ama her şeyden önce, platform bağımsızlığı ne anlama geliyor? Bu sorunun cevabını alabilmek için bir kod derlediğimizde ne olduğunu bilmemiz gerekiyor.

Kod Derleme
Ne zaman bir kod yazsak, makul miktarda okunabilirliği olan bir programlama dilinin sözdizimlerini takip ederiz. Ve birkaç kelime, kelime öbeği, değişken adı, yöntem adı vb. içerir. Bütün bunlar insan tarafından okunabilir ve insan tarafından anlaşılabilir metin olarak kabul edilir.
Bu nedenle bir makine, kaynak kodunu makine düzeyinde dil olarak da adlandırılan makine tarafından okunabilir bir koda dönüştürmek için bir derleyici kullanır. Derleyici, makine düzeyindeki kodu, CPU tarafından kolayca anlaşılabilecek ve dolayısıyla sorunsuz bir şekilde yürütülebilecek şekilde belirli bir sunumda oluşturur.
Bu makine düzeyinde dil yapısı, her programlama diline ve her işletim sistemine göre farklılık gösterir. Örneğin, c/c++, farklı bir işletim sisteminde çalışıyorlarsa iki makine için aynı olmayan bir .exe dosyası oluşturur.
Ve işte sorun burada ortaya çıkıyor!
Makine düzeyinde bir dil her işletim sistemine göre farklılık gösterdiğinde, her iki sistem de aynı işletim sisteminde çalışmadıkça, farklı bir makinede derlenen bir kodu yeni bir makinede çalıştıramayız. Bu, birçok programcı ve geliştirici için saçmalık gibi geliyor.
Ancak Java işleri kolaylaştırır ve Java'nın bunun için bir çözümü vardır. Başlayalım.
Java Platformdan Bağımsızdır
Peki Java'da kod derlediğimizde ne olur?
Ne zaman “javac filename.java” ifadesini girsek veya java'da bir kod derlesek, javac kodu derler. Ve Bayt Kodu adlı bir ara kod oluşturur.
Java'nın tüm farklı programlama dilleri arasında fark yarattığı yer burasıdır. Bayt kodu olarak kabul edilen bir .class dosyası oluşturur. Oysa c/c++ gibi diller derlendiklerinde yerel olarak yürütülebilir bir kod oluşturur ve böylece onları platforma bağımlı hale getirir.
Bekle, bu kutlama için çok erken. Bu bayt kodu yürütülebilir değil. Bu bayt kodunu çalıştırmak için bir çevirmene ihtiyacımız var. Ve JVM bu işi yapıyor. Genellikle JVM, bilgisayarımızın ana belleğinde bulunur. Java Sanal Makinesi, bir yorumlayıcı görevi görür ve ardından javac tarafından oluşturulan bayt kodunu yürütür.
Ve şimdi işimiz bitti, kodumuz başarıyla yürütülüyor.
Peki java hepsini tek başına nasıl yönetecek?
Ve cevap, JVM yüzünden olacaktır. Kaynak kodu derlemesi tarafından oluşturulan bayt kodu, herhangi bir işletim sisteminde çalışır, ancak bir makinede bulunan JVM, her işletim sistemi için farklıdır. Java bu şekilde platformdan bağımsız bir programlama dili olarak kabul edilir.
Düzgün anlamak için JVM'nin mimarisini ve çalışmasını anlayalım.
JVM Mimarisi
JVM, Java çalışma zamanı ortamının bir parçasıdır ve bir .java dosyasını bir .class dosyasına dönüştürmekten sorumludur. Java kodunu derlediğimizde JVM, kaynak koddaki ana yöntemi çağırır.
JVM Mimarisi
Sınıf Yükleyici
Java sanal makinesinde bir alt sistemdir. .class dosyasını yükler, herhangi bir istisna olup olmadığını kontrol eder ve birkaç çalışma zamanı istisnasının nedeni budur. Ve kontrol ettikten sonra, değişkenler ve mevcut yöntemler için bellek ayırır, değişkenlere ve dizilere varsayılan değerler atayın. Ayrıca kodda bulunan statik yöntemleri veya değişkenleri de yürütür.

JVMm'de 3 yerleşik sınıf yükleyici, önyükleme sınıf yükleyici, Uzantı sınıf yükleyici, Uygulama sınıf yükleyici vardır.
JVM'deki Bellek Alanları
Yöntem/Sınıf Alanı
Sınıf adları, yöntem adları, değişkenler gibi bilgileri depolar. Bir sınıftaki tüm yöntemler ve değişkenler için paylaşılan bir kaynaktır.
Yığın
Yığın alanında depolanan tüm verilerin bilgilerini saklar.
JVM Dil Yığını
Bilgileri, bir işlev çağrısı olduğunda mevcut bilgileri saklayan, yerel değişkenleri depolayan yığın çerçeveleri/çerçeveler olarak da adlandırılan bloklarda depolar, ayrıca iş parçacığı yönetiminde baskın bir rol oynar.
PC Kayıt
Yürütülmekte olan talimatın adresini saklar. Çok iş parçacıklı yürütme durumunda kullanışlıdır.
Yerel Yöntem Yığını
Kullanılan yerel yöntemlerin tüm bilgilerini depolar.
Yürütme Motoru
Yürütme motoru bayt kodunu yürütür ve erişilemeyen veya başvurulmayan nesnelere tahsis edilen belleği kaldırır. Yürütme motorundaki yorumlayıcı, bayt kodunu bir akışta okuyarak ve satır satır yorumlayarak yürütür.
Ayrıca, yöntemler için yerel bir yürütülebilir kod oluşturduğu JIT derleyicisi (Tam Zamanında Derleyici) adlı heyecan verici bir bölümü vardır; bu nedenle, birden çok işlev çağrısı varsa, JVM'nin onu yeniden yorumlaması gerekmez, bunun yerine doğrudan yerel yürütülebilir kodu kullanın. Dolayısıyla yürütme performansını artırır.
Yerel Yöntem Arayüzü
Bu arabirim, Java tarafından C/C++ gibi farklı dillerde uygulanan uygulamalarla etkileşim kurmak için kullanılır. Etkileşim çift yönlüdür, burada JVM bu uygulamaları çağırabilir veya bu uygulamalar tarafından çağrılabilir.
Yerel Yöntem Kitaplıkları
Yürütme motoru tarafından kullanılabilecek yerel dil kitaplıklarının kaydını tutar.
JVM'nin mimarisini anladığımıza göre şimdi tartışmamıza geri dönelim. Dolayısıyla bu JVM, farklı işletim sistemleri için farklıdır, ancak bu JVM'ler tarafından üretilen çıktı, sağlanan aynı bayt kodu için aynı olacaktır.

Ayrıca Okuyun: Java Projesi Fikirleri ve Konuları
Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
Çözüm
Java'nın birkaç benzersiz özelliğini inceledik, C/C++ gibi dillerde kod derlediğimizde ne olduğunu anladık, yerel olarak yürütülebilir kod ile bayt kodu arasındaki farkı anladık. Java'nın neden platformdan bağımsız bir dil olarak kabul edildiğinin açıklamasını inceledik ve Java'nın platform bağımsızlığının ardındaki nedenin JVM olduğunu anladık. Daha iyi anlamak için JVM mimarisine baktık.
Artık java'nın neden platformdan bağımsız olduğunun farkında olduğunuza göre, java'nın diğer benzersiz özelliklerini keşfedin ve bunları kullanmaya başlayın!
Java, tam yığın yazılım geliştirme hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500+ saatlik zorlu eğitim, 9+ projeler ve ödevler, IIIT-B Mezunları statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.
Java'nın diğer dillere göre avantajları nelerdir?
Java'nın diğer dillere göre birçok avantajı vardır. En büyük avantajla başlayalım, Java platformdan bağımsızdır. Java kodu herhangi bir donanım platformunda, işletim sisteminde ve tarayıcıda çalışabilir. Herhangi bir cihazda çalışabilir. Bu, uygulamanızı Java'da yazdıktan sonra herhangi bir cihazda çalıştırabileceğiniz anlamına gelir. Bu kadar basit! Ayrıca, kodunuzu yazdıktan sonra, hata ayıklamak ve hataları düzeltmek çok kolaydır. Son olarak, Java nesne yönelimlidir. Bu, daha küçük programlar ve kod kullanmanız gerektiği anlamına gelir. Bu, kodunuzla çalışmayı kolaylaştıracaktır. Herhangi bir değişiklik gerekiyorsa, kod hataya daha az eğilimlidir. Multithreading, Bellek Yönetimi, Platformdan bağımsız, Güvenlik, Sanal Makine yani bayt kodu, Toplama Çerçevesi, Çöp Toplayıcı, Katmanlı mimari gibi özelliklere sahiptir.
Java platformu neden bağımsızdır?
Java, sanal bir makine kullandığı için platformdan bağımsızdır. Java programlama dili ve tüm API'ler bayt kodlarına derlenir. Bayt kodları etkin bir şekilde platformdan bağımsızdır. Sanal makine, farklı platformlar için bayt kodları arasındaki farklarla ilgilenir. Java için çalışma zamanı gereksinimleri bu nedenle çok küçüktür. Java sanal makinesi, donanımla ilgili tüm sorunlarla ilgilenir, böylece farklı donanımlar için hiçbir kod derlenmesi gerekmez.
Java'da otomatik çöp toplama nedir?
Otomatik çöp toplama, programcının kod yazması gerekmeden çöp toplayıcının otomatik olarak çalıştığı bir çöp toplama tekniğidir. Java'da çöp toplama, Java Sanal Makinesi özel bir moda geçirilerek yapılır. Çöp toplayıcı, bunu yapmak için bir fırsat gördüğünde çalışır. Bazı çöp toplayıcılar dünyayı durdurma yaklaşımını kullanır ve Java Sanal Makinesi'nin çöp toplama işlemini gerçekleştirmek için programı yürütmeyi durdurması gerekir. Çöp Toplama kolay bir kavram değildir, ancak bir kez elde ettiğinizde geriye bakmanız gerekmez. Ve Java'nın çöp toplaması, anlaşılması en kolay olanlardan biridir.