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.