Java sanal makinesi nedir?

Öncelikle herkese iyi forumlar.
Kotlin ile ilgili dökümanları okurken şu satıra denk geldim:
Java sanal makinesi üzerinde çalışan bir proglamlama dili
Olarak geçiyor.Kotlin’in java ile çalıştığını biliyorum ama bu Java sanal makinesi de noluyor ?

Bu ne demek?​​​​​​​​

Java sanal makinesi üzerinden çalışığını.

JVM C++ ile yazılmış bir programdır. Amacı Java bytecode’larını çalıştırmak. Java programları öncelikle bytecode haline getirilir, sonra da JVM tarafından yorumlanır. Çünkü derlenen Java programları işlemcinin anlayacağı bir dile değil, JVM’nin anlayacağı bir dile dönüştürülür. Bu dili bilirseniz, siz de JVM üzerinde çalışan bir programlama dili geliştirebilirsiniz tıpkı Kotlin gibi. Kotlin programları da bu bytecode denilen ara koda dönüştürülür ve JVM tarafından çalıştırılabilir hale gelir.

1 Beğeni

Python için CPython ne ise bu da Java için o.

1 Beğeni

Java gibi dillerin 3.seviye diller olduğu söylenmiş acaba bu nedemek ?
@EkremDincel @coderistan

Seviye olarak ne kastediliyor? Benim bildiğim düşük, orta, yüksek seviye dil vardır.

Python’un 2. seviye dil olduğu orta seviye dil olduğu anlamınamı geliyor o zaman ?

  1. seviye olduğunu nereden öğrendiniz? Ben bilmediğim için soruyorum. Mesela şuraya bakarak konuşuyorum ben. Python yüksek seviye bir dildir diyebilirim, ama 2. seviye neden deniliyor bilmiyorum.

https://tr.wikibooks.org/wiki/Programlama_Dilleri

1 Beğeni

Seviye değil de “nesil” demiş olabilir mi:

Third-generation programming language - Wikipedia

2 Beğeni

@anon18277073 galiba 3. nesil denmiş orda.

12:23:53 0 aib@vivaldi:/tmp% echo 'class Hello { public static void main(String args) { System.out.println("Hello, World!"); } }' > Hello.java && javac Hello.java && javap -c Hello.class
Compiled from "Hello.java"
class Hello {
  Hello();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String);
    Code:
       0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #13                 // String Hello, World!
       5: invokevirtual #15                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: return
}

JVM su stack bazli assembly kodunu calistiran islemci.

4 Beğeni

@aib hocam peki bu JVM andorid için nasıl derliyor ?

1 Beğeni

Google’a sormayı denediniz mi? Eğer araştırırsanız JVM’nin android versiyonunun Dalvik Sanal Makinesi olduğunu görürsünüz.

Hocam bu python yorumlayıcısının android versiyonunu yazarsam python ile androidde sorunsuz uygulama yapabilirmiyim ?

Böyle bir çalışma zaten var. Kivy, Python yorumlayıcısını derleyip android üzerinde python uygulaması çalıştırmanızı sağlıyor. Dolayısıyla böyle bir amacınız varsa Kivy kullanabilirsiniz.

Hocam benim kastettiğim jython değil ben python için JVM yapılabilirmi onu sorucaktım.

Jython değil zaten bahsettiğim. Bildiğiniz Python kaynak kodundan derlenerek Android üzerinde uygulamaları çalıştırmak için kullanıyorlar(Python’un C apisi sanırım).

Python için JVM gibi bir şey yapılır mı? Yapılabilir belki imkansız değil.

Eğer imkansız değil ise Java ve Kotlin gibi dillerin android’teki tekeli yok olmuş olur.

Google neyi uygun görürse o olur. Zamanında Java kullandılar, ancak Oracle ile olan dava yüzünden Kotlin’i geliştirmeye başladılar. Hali hazırda belki milyonlarca android Java ve Kotlin geliştiricisi varken böyle bir karar almak pek akıl işi olmaz.