Gömülü Sistemlerde Java

Başlatan django, 25 Ağustos 2014, 22:42:32

django

Arkadaşlar, biliyoruz ki Java ve Java fanları, Java'yı hep bu şekilde savunur. Java her yerde vardır! İnkar etmiyorum, doğru çoğu yerde kullanılıyor, dil düşmanı da değilim. Fakat Java gömülü sistemlerde kullanılması bana biraz garip geliyor. Sonuçta Java, interpreted bir dil ve sanal makine olmaksızın çalışmıyor. Gömülü sistemlerde direk makine diline dönüştürülebilen BASIC, C gibi dillerin kullanıldığını biliyorum ve kullanıyorum da.

Fakat bu kadar övülen Java'nın gömülü sistemlerde kullanımı nasıl oluyor? Run everywhere felsefesi zaten gömülü sistemler için geçerli olmamalı, olamaz diye düşünüyorum çünkü her parçanın datasheeti farklı. Benim elektronikte ufkum çok geniş değil, ama ben Java ile bir ARM entegrenin programlanabileceğini düşünmüyorum.

Bu insanların gömülü sistemden kastettikleri nedir? Acaba el bilgisayarları gibi şeyler mi? İnternette araştırdım fakat açık bilgi bulamadım. Siz bu konuda ne düşünüyorsunuz?

quarko

Bu iş için üretilmiş özel geliştirme kitleri bile mevcut. (Örn. STM32 F4/F2 series Java evaluation kit)

Aşağıdaki linkteki ürünleri inceleyebilirsiniz.

http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF252537?sc=stm3240g-java#

http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF252535?sc=stm3220g-java#
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

oyaz

Benim anladığım eclipse içinde var olan JVM ile kodlar ARM a göre derleniyor ve içine atılıyor. Yoksa JVM ARM işlemcinin içinde mi çalışıyor?
Become a learning machine...

Tesla.25

Fortran ile de mikroişlemci programlanamaz mı? Programlanır. Sonuçta makine diline çevrilmesi yeterli.
Ama bu Fortran ile mikroişlemci programlayacağımız anlamına gelmiyor.
:D

Tagli

Konu hakkında ayrıntılı bilgim yok ama bildiğim kadarıyla bazı ARM çekirdekleri, Java kodlarını donanım seviyesinde doğrudan çalıştırabiliyor. Bu da ciddi performans artışı sağlıyor. İlgili modellerin kodlarının sonu da J ile bitiyordu diye kalmış aklımda.

Gömülü sistem çok geniş ve biraz da bulanık bir ifade ama benim anladığım, bir cihazın içinde belli bir işi yapmak için özel olarak kurulmuş, cihazın ayrılmaz bir parçası olan, son kullanıcı tarafından değiştirilmesi/yeniden kurulması söz konusu olmayan bilgisayar/mikrodenetleyici sistemlerine gömülü sistem deniyor.

Eclipse bir IDE, JVM ile doğrudan bir ilgisi yok.
Gökçe Tağlıoğlu

oyaz

Sonuçta java kodlarını bir platforma göre derlemek gerekmiyor mu ?
Become a learning machine...

Burak B

#6
Java platformdan bağımsız bir dildir. Yani uygulamalar Java Sanal Makinesinin (JVM) çalıştığı her ortamda çalışabilir. Tabi uygulama platforma bağımlı ise bu ihtiyaçları karşılamak gerekir. Yani I/O, Ekran, Ses, v.s. gibi donanım katmanları ile bilgi alışverişinde bulunuyorsa.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Tesla.25

#7
Araştırma yaparken şunu buldum:
http://electronics.stackexchange.com/questions/7901/microcontroller-with-java-api
Burada sorulan soruya benzer bir soru.

AVR işlemciler için Java sanal makinesi varmış
http://www.harbaum.org/till/nanovm/index.shtml

Ama gereksinimlerine bakınca,
-As little as 512 bytes of program memory (not KB, and definitely not MB)
-As little as 768 bytes of RAM (where your variables go. You're limited to 768 characters of strings by this restriction.)
-About 20k Java opcodes per second on 8 Mhz AVR.

Ve sağlanan Java kütüphaneleri
-java.lang.Object, java.lang.System, java.io.PrintStream, java.lang.StringBuffer.


(Ayrıntılı bilgilere verdiğim adreslerden ulaşabilirsiniz.)


Benim mikroişlemciler hakkında çok derin bilgilerim yok. Bu yüzden bende şunu sorayım;
Çoğu mikroişlemcinin çok küçük, kısıtlı hafızası var. Ki bildiğim kadarıyla bazen C bile değil ASSEMBLY kullanılıyor bu nedenle. Hal böyleyken, bu NanoAVR denen sanal makine ne kadar kullanışlı olur verimli olur?

mesaj birleştirme:: 30 Ağustos 2014, 15:31:38

Ek olarak şu yazıyı da yeni gördüm; :)
It is not a full featured Java VM and it will never be. It will always be limited to a small subset of the java language and the standard java libraries and a few application specific methods. Furthermore, it is not meant to replace C as the standard way of programming microcontrollers. It is less flexible and has a lower performance than C or assembler programs.