Witam! Szukam jakiegoś mikrokontrolera na którym mógłbym zainstalować wirtualną maszynę javy i można by było programować go w javie? Czy ktoś coś na ten tamat słyszał. Pozdrawiam
z trudem potrafię w to uwierzyć. Java z zasady działania intensywnie używa RAM. Przykład źródła to potwierdza: program basicowy w stylu wyrażony w javie. Wydaje mi się że musieli porobić mocne kompromisy (i nie wiem czy nie ze skutkiem na kompatybilności) np. ze względu na brak 32bitowej architektury.
Na 32-bitowce są (są=w ogólnym sensie) JVM, np. na ARM.
Na ARM-owy bądź co bądź Pocket PC normalna 'korporacyjna' JVM jest do kupienia za kilkanaście $ /sztukę z tym że to nie jest Sun, nie pamietam kto
Jak na architektury uC ? pewnie coś znajdziesz, ale nie szukaj niżej niż 32bity. Mam na myśli ze Hardware Abstraction Layer i jakaś biblioteka standardowa też musi być.
A pomysł języków interpretowanych na uC jest mi jako kibicowi bliski. Z jednej strony są forth'y (rekordy minimalizacji) w różnych dialektach - ale to języki stosowe więc trudno się przestawić. Stosowe są też Lisp'y i Scheme'y.
Nie wiem czy dotykałeś Forth'a ? Ja tylko czytałem, nie pisałem w nim nic. Na 8 bitach by szedł ok, nawet mini kompilator.
Z algorytmicznych stosunkowo najmniejszy jest Lua, podejrzewał bym że na architekturach 16 bit (lub 8 z dobrą 16 bit arytmetyką) już coś być może podziałać.
W każdym z nich nie wyobrażam sobie nie zużywania RAM-u, taka jest natura interpretera.
Zakładając że pojawi się kiedyś potrzeba wykorzystania zalet (a są!) interpretowanych języków na uC, kto wie, może taki nawet kiedyś zaprojektuję ?
JacekCz NanoVM sprawdzałem osobiście, działa całkiem sprawnie na ATm8. I ma ten plus, że kolejny program wgrywa się poprzez UART. Możliwości ma zaskakująco dość dobre - dziedziczenie, wsparcie dla static, przeciążanie. Więc to nie tylko napisanie tylko z kontrukcjami języka Java, ale też jakieś tam wsparcie dla obiektowości z ograniczeniami Javy.
Natywną obsługę peryferiów ma oczywiście napisaną w C i tylko przemapowaną na Java. Kod jest dość zrozumiały, szybko można zacząć wprowadzać swoje poprawki. Fajna zabawa na początek. Polecam, choć główny developer jest trochę mrukowaty
Czy ktoś z was używa takich mutacji javy jak Waba i SuperWaba ?
Są przeniesione na przerózne komputery 16-32 bit (PalmOS 3-4 czyli motorole 68000, ARM-y i inne)
Jest to wersja Javy dla systemów posiadając poniżej 1Megabajtów pamięci (130 kilobajtów RAM i 350 kilobajtów ROM) . Dopasowana do rdzeniu Cortex-M i Cortex-A.
Ponadto jest też pakiet Java Embedded Suite 7.0 (serwer WWW GlassFish, Jersey - Framework WebServices Frame oraz JavaDB. Pakiet dostępny dla Linuxa na architekturę ARM i x86. Java Embedded Suite 7.0
Java i jej podobne języki nigdy nie będzie zbyt wydajna na takich układzikach (nawet z jednostką Jazelle) z bardzo prostej przyczyny - jest wielowątkowa.
✨ Dyskusja dotyczy możliwości uruchomienia wirtualnej maszyny Javy na mikrokontrolerach (uC). Wskazano, że na mikrokontrolerach 8-bitowych, takich jak Atmega, istnieje projekt NanoVM umożliwiający uruchomienie uproszczonej JVM z ograniczonym wsparciem obiektowości i programowaniem w Javie, z wgrywaniem programów przez UART. Jednak ze względu na intensywne wykorzystanie pamięci RAM przez Javę, pełna JVM jest praktyczna dopiero na mikrokontrolerach 32-bitowych, zwłaszcza z architekturą ARM Cortex-M i Cortex-A. Oracle udostępnił Java Micro Edition Embedded 3.2, dostosowaną do systemów z pamięcią poniżej 1 MB (130 kB RAM, 350 kB ROM). Wspomniano także o pakiecie Java Embedded Suite 7.0 dla systemów Linux na ARM i x86, zawierającym serwer WWW GlassFish, framework Jersey oraz JavaDB. Pojawiły się również informacje o implementacji Javy na mikrokontrolerze STM32 (model STM3220G-JAVA). Zwrócono uwagę, że języki podobne do Javy, takie jak Waba i SuperWaba, działają na różnych platformach 16-32 bitowych, w tym ARM i Motorola 68000. Podkreślono, że wielowątkowość Javy i ograniczenia sprzętowe mikrokontrolerów wpływają na wydajność i kompatybilność JVM na tych urządzeniach. Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.