Forum: Diğer Konular RSS
Bir dilden başka bir dile ait kodları çağırmak
İbrahim #1
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Bir dilden başka bir dile ait kodları çağırmak
Selamun Aleykum. Benim merak ettiğim konu mesela C++ içerisinde Java kodlarını nasıl cagirabiliyoruz? Yani bunun mantığı nedir? Örnek olmasi amacıyla QAndroidExtras kullanarak java kodları cagirabiliyoruz ama bu modülü yazanlar temelde nasıl yapıyorlar? Teşekkürler.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hızlıca baktım: JNI (Java Native Interface) ile yapılıyormuş. JNI; C, C++ vs. dillerle yazılmış programların içine JVM (Java Virtual Machine) yerleştirerek programın o Java ortamıyla etkileşmesini sağlıyormuş.

Ali
Avatar
zekeriyadurmus #3
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali hocamın cevabına ek olarak;

Java gibi bir sanal makine üzerinde çalıştırılan executable bir dosyaya bir diğer deyişle makine koduna derlenmeyen dillerde Ali hocamın da dediği gibi o dilin yorumlayıcısını (Bu durumda Java) kullandığın dil içerisinde çağırman gerek.

Örnek vermek gerekirse oyunları c++ ile yazarken oyun içi bazı yerleri python, lua gibi scripting diller ile yazıp hız ve zamandan tasarruf yapıyorlar. Bunun içinse o dilin derleyici/yorumlayıcı ne var ise onun fonksiyonlarını çağırmak.

https://github.com/ariovistus/pyd bu projeyi incelersen D üzerinden nasıl python çağırılmış görebilirsin.
Benzer bir şekilde java yı da bu şekilde çağırmak mümkündür.

Gelelim ikinci noktaya. Eğer dilimiz c, c++ gibi makine koduna derleniyorsa. Aşağıdaki örnekte işlemin nasıl yapıldığını görebilirsin o yüzden sadece mantığını anlatacağım. Programı derlediğimizde saf bir object dosyası oluşur bu dosya linker işleminden geçtikten sonra executable dosya oluşturulmuş olur. Linker işleminden geçirirken başka bir dilde yazılıp derlenmiş object dosyasını da linker işlemine dahil edersek ve uygun bir şekilde header tanımlamalarını yaparsak 2 farklı dilde derlenmiş olan kodlar birbirine bağlanabilir ve beraber çalışabilir.

https://www.talhadurmus.com/c-dilini-d-ile-birlikte-derlemek

Birazcık araştırdığımda c üzerinden java yı nasıl çağırabileceğimize yönelik aşağıdaki linki buldum. Gerekli kütüphaneleri projeye dahil ettiğinde rahatlıkla çağırabilirsin.

http://www.rgagnon.com/javadetails/java-0354.html

Zekeriya
Bilgi meraktan gelir...
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 19:36:46 (UTC -08:00)