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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.