Replit'te Java neden "Hello World" komutu yazılınca 71 MB yer kaplıyor?

AMONYAK312

Zeptopat
Katılım
26 Ocak 2024
Mesajlar
1
Daha fazla  
Cinsiyet
Erkek
Replit'ten kodlarımı yazıyorum. Python'da hello world dizisi 5 mib ve bayağı hızlı ama Java'da hello world dizisi ise 71 mib ve 10 saniyede geliyor. Bu replitden mi kaynaklanıyor ya da normal mi? Normal ise neden?
 
Replit neymiş diye baktım, cloudda containerlarla çalışan bir kodlama platformu diye anladım. Yani java hello world programın için sana java kodu çalıştıracak bir ortam yaratıp gerisini sana bırakıyorlar diye özetleyebiliriz, keza python ya da başka bir app de benzer şekilde. Disk kullanımı, hız farkı vs. replit sebepli değil muhtemelen.

Python interpreterı python kodunu satır satır okur ve çalıştırır. .py uzantılı dosyanda print "hello world" yazdığını görünce yazdırır.

Java kodu ise önce compile edilir, java compilerı senin kodundaki ana classı, class içindeki main methodunu, main içindeki system.out.println("hello world"); kodunu vs. güzelce okur ve bytecode denen, java virtual machine tarafından anlaşılabilecek bir hale dönüştürür. Kod çalıştırılacağı zaman JVM bu bytecodeu okur, bilgisayarın anlayabileceği makine koduna dönüştürür ve kod çalışmış olur. Compile edilmiş dosyalar da diskte tutulur, yani hem senin program.java diye source kodun hem de program.class diye bytecode dosyaların yer kaplar. Compiler bu bytecodeu oluştururken javadaki pek çok temel library'yi de compile edilmiş kodun çalışabilmesi için içine ekler, sen sadece "hello world" yazdıracak bir kod olarak düşünsen de javadaki object, class, int, string vb. yapılar, veri tipleri de compile işleminde .class dosyasına eklenir (programına import blabla diye başka libraryler eklersen onlar da eklenecektir, bu demin saydıklarım default olarak eklenen şeyler).

Özetle,
pythonda sadece .py dosyasındaki source kod var, çalıştırınca o satır okunuyor ve ekrana yazdırılıyor.
java önce .java dosyasındaki source kodu okuyup compile işlemi yapıyor, .class dosyası oluşturuyor, sonra .class dosyasını jvm alıp bu neymiş diye bakıyor, ekrana yazdırma komutunu görünce ekrana yazdırıyor, boyut farkı ve neden yavaş çalıştığı bu şekilde açıklanabilir.

not: Aslında jvm compile edilmiş bir kodu pythonun satır satır okuyup işlemesinden daha hızlı çalıştırır bu arada, hello world ölçeğinde bir programda ise tam tersi bir sonuçla karşılaşırsın.
 
Fiziksel disk'te derle. En sağlıklısı. Bulut derleyiciler muhtemelen Javascript kullanıyor her şey için. Her zaman gerçek derleneni düzgün taklit de edemiyor olabilirler.

Disk üzerinde tek satırlık python dosyası sade 1 KB. Derlenirken olsun 10 KB.
 

Technopat Haberler

Yeni konular

Geri
Yukarı