Java derleyicisi ve JVM hangi dilde yazılıyor?


196

Java derleyicisi ( javac), sanal makine (JVM) ve javastarter hangi dillerde yazılmıştır?


23
java üzerinde çalışıyorum bu yüzden dil hakkında bilmek istiyorum ... :)
Rahul Garg

26
Bu sizin bakış açınız. 20 yıldır bazı teknolojiler üzerinde çalıştığınızı ve görüşmeci size hangi dili yazdığını veya nasıl çalıştığını soracağını söyleyebilirsin, umursamadığını söyleyebilirsin, sadece dilde başka bir şey istemiyorsan yazmak istediğin anlamına gelir dili gerçekten anlamak için.
Rahul Garg

22
ve bence daha fazla bilgi asla boşa harcanmaz, yani bir şeyi bilmek zaman kaybı değildir.
Rahul Garg

1
... bir makine mühendisi ya da bir yarış sürücüsü (metaforu uzatmak için)
Epaga

2
@paxdiablo araba kullanmak yaptığınız bir şeydir, ancak mesleğiniz değil. Yarış arabası sürücüleri motorların nasıl çalıştığını umursabilir. Hepsi umursamıyor demiyorum .. ama bir yarış arabası sürücüsü motorun araba üzerinde nasıl çalıştığı hakkında daha fazla bilgi edinmek isterse, bunun mantıksız olduğunu düşünür müsünüz?
JD Isaacks

Yanıtlar:


173

Sorunun kesin ifadesi biraz yanıltıcıdır: "JVM" veya "derleyici" değildir , çünkü birden fazla JVM satıcısı (jrockit bir, IBM diğeri) ve birden fazla derleyici vardır.

  • Güneş JVM olduğu yazılmış Cöyle makinenizde çalışan olarak JVM a - bu şart olmasa da, platforma bağımlı yürütülebilir ve bu nedenle olabilir başlangıçta herhangi bir dilde yazılmıştır. Örneğin, orijinal IBM JVM Smalltalk ile yazılmıştır

  • Java kitaplıklarının ( java.lang, java.utilgenellikle Java API olarak adlandırılan vb. ) Kendileri Java'da yazılır, ancak olarak işaretlenmiş yöntemler veya nativeolarak yazılır .CC++

  • Sun'ın sağladığı Java derleyicisinin de Java ile yazılmış olduğuna inanıyorum. (Yine de, orada birden fazla derleyici var)


Bence o bir JVM başlatmak için kullandığınız programı "java" demek.
Stephen C

1
Aslında Sun'ın JRE'sindeki bir kütüphane NetRexx'te yazılmıştır. (BigInteger, BigNum veya BigDecimal gibi rasgele hassas matematik kütüphanelerinden biridir. Hangisini unuttum.) Teorik olarak, bir Java programının sunabileceği bir temsili derleyebildiği sürece JRE'yi uygulamak için herhangi bir dili kullanabilirsiniz. anlama.
Jörg W Mittag

18
Lütfen C dilinde yazılan Sun JVM'ye bir referans veriniz.
Mohamed Bana

8
HotSpot JVM C ++ ile yazılmıştır - www2.research.att.com/~bs/applications.html
devdimi

5
@devdimi bağlantı bozuk ve şimdi de bulunduğu edilir: stroustrup.com/applications.html
FLUP

81

İlk Java derleyicisi Sun Microsystems tarafından geliştirildi ve C ++ 'dan bazı kütüphaneler kullanılarak C dilinde yazıldı. Bugün Java derleyicisi Java ile, JRE ise C ile yazılmıştır.

Java derleyicisinin Java'da nasıl yazıldığını tahmin edebiliriz:

Java derleyicisi bir Java programı olarak yazılır ve sonra C (ilk Java derleyicisi) ile yazılmış Java derleyicisi ile derlenir. Böylece Java programlarını derlemek için yeni derlenmiş Java derleyicisini (Java ile yazılmış) kullanabiliriz.


32
Java derleyicisinin Java'da nasıl yazılabileceğini açıklayan +1 + 1
Eduard Luca

2
fyi kodlarını daha temel derleyicilerde derleyerek yeni derleyicilere bu "yükseltme" işlemine, bir makinenin "önyükleme" işlevinin geldiği yer olan "önyüklemelerinizle kendinizi çekme" denilen "önyükleme" adı verilir. YouTube'da Computerphile'ın bu ve "T diyagramları" hakkında iyi bir videosu var
iono

Bu da tavuk ve yumurta sorununa cevap
Skynet

@Skynet kendi kendine barındırılan tavuk
sportzpikachu

65

Gönderen Java Dokümanlar

Derleyici Java ile yazılmış ve çalışma zamanı ANSI C ile yazılmıştır.


1
Sun Microsystems tarafından geliştirilen ilk Java derleyicisi C ++ 'da C ++ en.wikipedia.org/wiki/Java_compiler
Rahul Garg

4
Bu gerçekten eski bir belgedir (şeylerin görünüşünden> 10 yıl). Örneğin, "Java bayt kodları anında yerel makine yönergelerine çevrilir (yorumlanır) ve hiçbir yerde saklanmaz" diyor ve bu yaklaşık 5 yıldır doğru değil!
oxbow_lakes

2
Peki, özellikle büyük değişikliklerden sonra dokümantasyon ne zamandan beri güncel? :)
Esko

Peki - cevap gerçekten doğru değil; Sun JVM C ile, Sun java derleyicisi ise Java ile yazılmıştır. İlk IBM JVM, Smalltalk dilinde yazılmıştır.
oxbow_lakes

8
Java'yı ne derler? Java. Peki, Java'yı nasıl edinebilirsiniz? Derleyin. Ha?


9

Bu bağlantı sorunuzu cevaplamalıdır

Derleyici şimdi Java ile yazılmış gibi görünüyor, ancak çalışma zamanı ANSI C ile yazılmış


8

Prensipte hemen hemen her şey, genellikle C


3

Jikes RVM , araştırma amacıyla yaygın olarak kullanılan, kendini barındıran bir JVM, Java ile yazılmıştır. İnsanların masaüstlerinde koştuğu tek kişi değil, ancak "şimdi dilin genel gücünü gösterelim" listemde yukarıda.


Kaplumbağalar aşağı mı? Bir çeşit mikro çekirdeği var mı? Eğer öyleyse, hangi dilde yazılmıştır?
Raedwald

3

Sun tarafından sağlanan Hotspot JVM'den bahsettiğinizi varsayarsak, C ++ ile yazılmıştır. Java için çeşitli sanal makineler hakkında daha fazla bilgi için bu bağlantıyı kontrol edebilirsiniz . Java derleyicilerinin çoğu gibi javac da Java ile yazılmıştır.


0
  • Java, Sun Microsystem tarafından tanıtıldığında , java derleyicisi C ++ 'daki bazı kütüphaneler kullanılarak C dilinde yazılmıştır.
  • Derleyici Tasarımında Bootstapping adı verilen bir kavram olduğu için, çoğunlukla Derleyici Geliştirmede kullanılır, Önyükleme , derlemeyi amaçladığı kaynak programlama dilinde bir derleyici (veya Assembler) yazma işlemidir. Kendi kendini barındıran bir derleyici üretmek için kullanılır. Yeni Programlama dilleri için derleyicilerin geliştirilmesi önce mevcut bir dilde geliştirildi ve daha sonra yeni dilde yeniden yazıldı ve kendi kendine derlendi. Bu yüzden bugün Java derleyicisi Java'nın kendisinde yazılıyor .
  • Java Sanal Makinesi: Java sanal makinesi soyut bir makinedir. Gerçek bir bilgi işlem makinesi gibi, bir talimat setine sahiptir ve çalışma zamanının çeşitli bellek alanlarını manipüle eder.Genellikle JVM bayt kodunu Makine koduna yorumlar.

(Daha Fazla Bilgi İçin Bu bağlantıyı kontrol edebilirsiniz: https://docs.oracle.com/javase/specs/jvms/se7/html/ )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.