Forum: Mikrocontroller und Digitale Elektronik STM32 Java mit MicroEJ


von Chris S. (chris606)


Lesenswert?

Guten Morgen,

hat von euch jemand Erfahrung mit den STM32 und MicroEJ?
Ist diese Kombination empfehlenswert um mit Java zu programmieren?
Gibt es besser Alternativen?

Gruß
Christian

: Bearbeitet durch User
von Stefan F. (Gast)


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.

von Chris S. (chris606)


Lesenswert?

Ok.
Das Problem ist folgendes:
Ich habe eine PC Anwendung die in C# programmiert ist.
Das ganze soll nun standalone werden und auf dem STM32 laufen.
C# nach Java umzuschreiben wäre halt kein großes Problem gewesen.

Gruß
Christian

von Nop (Gast)


Lesenswert?

Stefan U. schrieb:

> Das Hauptargument für Java ist immer "Einmal entwickelt läuft auf allen
> Maschinen".

"write once, debug everywhere". ;-)

von Nai Fling (Gast)


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.

von Ben W. (ben_w)


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?

von Stefan F. (Gast)


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.

von Chris S. (chris606)


Lesenswert?

Sind mit Micro .Net auch UI's mit Touch GFX oder Embedded Wizard möglich 
sind?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.