STM32 Java mit MicroEJ

Gast #5098091
Lesenswert?

Java bietet nur mit JIT Compiler gute Performance, das ist auf 
Mikrocontrollern aber nicht realisierbar. Ohne JIT Compiler wird der 
Code interpretiert, dann läuft er 100x langsamer.

Java ist von Anfang an nicht für hardwarenahe Programmierung ausgelegt - 
noch viel weniger als C. Entsprechend umständlich ist ist die Umsetzung 
von Bit-Operationen, Port-Zugriffen und Interruptroutinen.

Das Hauptargument für Java ist immer "Einmal entwickelt läuft auf allen 
Maschinen". Es gibt jedoch zahlreiche Java Programme (eigentlich fast 
alle), die nur auf einem bestimmten Betriebsystem laufen und dann 
teilweise sogar nur auf bestimmten Versionen.

Hier geht es aber um Mikrocontroller, also hardwarenahe Anwendung. Es 
sollte offensichtlich sein, daß ein Programm, daß für eine bestimmte 
Hardware geschrieben wurde, auf einer anderen Hardware nicht ohne 
Änderung laufen wird. Und genau dann macht Java keinen Sinn mehr.

Du solltest hinterfragen: Was kann Java, was mir hilft und andere 
compilierte Sprachen nicht können? Warum sollte ich mir den 
Laufzeit-Overhead von Java antun?

Langer Rede kurzer Sinn: Tu Dir das nicht an - auch keine ähnlichen 
Alternativen. Ich kenne nur ein Gerät, wo es ein ganz kleines bisschen 
Sinnvoll erscheint, und das ist Lego Mindstorms - ein Spielzeug, 
wohlgemerkt.
Gast #5098143
Lesenswert?

Chris S. schrieb:
> Das ganze soll nun standalone werden und auf dem STM32 laufen.

Und am STM32 hast du bereits eine Festplatte, eine VGA und ein
USB Keyboard angeschlossen ... oops ich vergass die Maus, die
ist natürlich auch dabei.

... und im 1 MB Speicher des STM32 langweilt sich bereits
Windows 7 und wartet nur darauf dass es deine Java Applikation
interpretieren darf.
#5098148
Lesenswert?

man sollte die 32Bit Cortex-M3/M4 nicht unterschätzen ... selbst Java 
läuft da gar nicht mal schlecht drauf.

ich habe MicroEJ leider selbst nur als demo gesehen und mit anderen 
Entwicklern die es einsetzen gesprochen.
Mein Fazit: es ist besser als erwartet. Und besonders hilfreich für 
TCP/IP Sachen, da es komplett "schön" von Java abstrahiert wird.
Es ist nicht zu empfehlen wenn man wirklich "harte" Echtzeit Anwendungen 
hat bei denen man in wenigen hundert Millisekunden reagieren muss oder 
besonders viele IRQs zu verarbeiten hat.
Es sollte aber auch klar sein das MicroEJ nicht das volle Java, was man 
vom PC kennt, unterstützt. Es ist schon etwas optimierter.

Übrigens gibt es auch C# für den STM32, wäre es nicht sinnvoller zu 
schauen ob man die C# Anwendung so runter brechen kann das es mit C# auf 
dem STM32 läuft?
Gast #5098155
Lesenswert?

Netzwerk-Kommunikation war ja auch von Anfang an in Java drin und das 
ist meiner Meinung nach auch schon die einzige Stärke von Java und 
dessen Libraries, die es von anderen programmiersprachen abhebt.

Nur: Wenn deine Anwendung im Grunde genommen nur Netzwerk-Kommunikation 
macht, dann gehört sie sinnvollerweise auf einen Raspberry Pi oder einem 
anderen Computer mit Linux oder Windows.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren