Hi,
ich habe mich lange mit 8bitter und C vergnügt, nun wird es zeit sich
ein neues ziel zu setzen.
grundsätzliche frage
macht es sinn java und arm zu kombinieren?
ich habe mir zum ziel gesetzt, java zu erlernen und mich mit der
thematik 32bitter auseinanderzusetzen, um java applikationen schön auf
einem display(z.b.640x480 o.ä.) darzustellen.
auf dem display sollen verschiedene messwerte und zustände in grafiken
und in farbe angezeigt werden.
es ist sicherlich ein os notwendig wie z.b. linux(µclinux) bzw. wince.
oder?
hat schon jemand erfahrungen mit java und µc?
kann mir jemand umsteiger - tipps geben?
danke
javarm
Solange Java als Plattform softwaremässig übersetzt werden muss, wird es
immer ein Flaschenhals in Punkto Resourcenverbrauch (Rechenleistung,
Speicherkapazitäten) gebeben.
Im embeddedbereich macht Java nur sehr selten Sinn, da halt mehr
Hardware gebraucht wird, was den Preis für das zu entwicklende Produkt
in die Höhe treibt.
In der Entwicklungszeit kann java allerdings auch kosten sparen, da
Javacoder in der Regel billiger sind, als erfahrene C-Programmierer.
Java wurde ursprünglich für embedded systeme entwickelt, um sich die
lästige Anpassung an ständig ändernde Hardwareumgebungen zu ersparen.
So war die erste Zielplattform für Java der Bereich consumer
electronics, also Videorecorder und ähnliches.
Es macht also imho, vor allem bei den durchaus guten
hardwarevoraussetzungen der ARMs, durchaus Sinn Java in embedded
Projekten zu benutzen.
Es gibt zwei Javas: die Plattform und die Sprache.
Bei dem heutigen gängigen Javalaufzeitumgebungen wird der produzierte
Bytecode entweder interpretiert oder zur laufzeit compiliert. Beides
verbraucht Resourcen, die für eine Embeddedlösung nur schwer tragbar.
Es soll wohl irgendwann mal JavaCPUs geben, die quasi eine
Laufzeitumgebung hardwaremässig implementiert haben. Bis sowas
Marktreif wird, wirds wohl noch ne ganze weile dauern, denke ich.
ihr seit euch einig sehe ich ;)
wie ist es den zum beispiel in einem pda oder handy oder z.b. im
-game boy advance- realisiert?
hier sind ja nun arm controller drin und denke auch java.
> Java wurde ursprünglich für embedded systeme entwickelt,
Und wie toll das funktioniert, sieht man bei Handys, die Prozessoren
mit weit über 100Mhz und mehrere Megabytes an RAM haben, nur damit man
darauf Java für Spiele laufen lassen kann, die auch auf dem C64 schon
gelaufen sind.
Zur Verteidigung der Javagames aufm Handy muss man sagen, das sich die
Handyhersteller immernoch nicht auf eine gemeinsame GamingAPI geeinigt
haben und viele immernoch ihr eigenes Süppchen kochen.
Auch was die Implementierung vorhandener Javastandards angeht,
verhalten sich noch lange nicht alles Handies so, wie sie sollten. Ganz
katastrophal siehts da z.B. bei dem relativ neuen MIDP 2.0 aus.
also die meinungen gehen ja in sehr verschiedene richtungen.
das hilft mir nun nicht wirklich weiter.
was ratet ihr mir für den einstieg zu arm und einem grafik lcd
display.
es sollte kein monochromes sein und nicht nur 128x64 pixel haben.
danke
"Und wie toll das funktioniert, sieht man bei Handys, die Prozessoren
mit weit über 100Mhz und mehrere Megabytes an RAM haben, nur damit man
darauf Java für Spiele laufen lassen kann, die auch auf dem C64 schon
gelaufen sind."
Blödsinn. Der Grund sind die rotzigen C++-Betriebssysteme wie Symbian.
Wenn ich bei meinem dämlichen Nokia manchmal nach einem Tastendruck
über 2 Sekunden warten muss und das bei einem ARM mit über 200MHz...
@niels: gute Java Programmierer sind genauso rar und teuer wie gute
C/C++ Programmierer oder Hostlinge ;)
Ich sprach oben btw nur von der Sprache, die Laufzeitumgebung ist
sowieso je nach hardware anzupassen. In dem Zusammenhang geht der
Vergleich mit MIDP eines anderen Posters btw imho ziemlich daneben.
Wenn, dann müßte man das mit CLDP oder CDP vergleichen.
Die Vorteile einer Java-Umgebung wären:
.) memory management! Keine Abstürze oder Fehlfunktionen durch pointer
Fehler.
.) Fehlerminimierung durch codereuse der zentralen Teile
.) bessere Wartbarkeit durch automatisch eher Design Pattern
orientierte Implementierung
.) Portierbarkeit auf andere Hardware
@Dominik:
naja, die Firma ajile ist glaub ich der Versenkung nahe. Zumindest habe
ich schon ewig nichts mehr von denen gehört...
Die Portierbarkeit des Java-Bytecode ergibt bei Mobiltelefonen,
Spielekonsolen usw. durchaus Sinn, weil Programme ohne Neukompilieren
auf verschiedenen Hardwareplattformen laufen können. Das geht aber nur
weil eine standardisierte Schnittstelle für Grafik, Ton und I/O
vorhanden ist. In den meisten Fällen von Embedded-Software
(Messwerterfassung, Steuerungen) bringt die VM außer zusätzlichem
Overhead rein gar nichts.
Automatische Bereichsüberprüfung von Variablen, Objektorientierung und
Portierbarkeit lassen sich mit zu Maschinencode kompilierten
Programmiersprachen (Ada) ebenso realisieren, dazu braucht es keine VM.
> Die Vorteile einer Java-Umgebung wären:> .) memory management! Keine Abstürze oder Fehlfunktionen durch> pointer Fehler.
Kann auch ein Nachteil sein. Der Memory ist zwar automatisch gemanagt,
dafür aber alle anderen Ressourcen nicht. Außerdem wird das
Laufzeitverhalten nichtdeterministisch, weil der GC zuschlagen kann,
wann immer er gerade Lust dazu hat.
> .) Fehlerminimierung durch codereuse der zentralen Teile
Das ist eigentlich in jeder Sprache möglich.
> .) bessere Wartbarkeit durch automatisch eher Design Pattern> orientierte Implementierung
Auch das ist in jeder Sprache möglich. In C++ ist halt vielleicht ein
Tick mehr Disziplin vom Programmierer gefragt, dafür wird mir hier
nicht so viel aufgezwungen wie in Java.
> .) Portierbarkeit auf andere Hardware
Die Portierbarkeit hängt von den verfügbaren Bibliotheken ab. Da fehlt
bei C++ halt einiges.
Das sind ja alles ganz gute Argumente, die für Java sprechen sollten und
ich bin mir sicher, auf Hi-End-Plattformen hat das Geraffels durchaus
seine Daseinsberechtigung.
Ich bin nachwievor aber der Meinung, das es bis Dato keine
Embeddedlösungen gibt, mit der sich kostengünstige Produkte realisieren
lassen. Auch das Java in der realität, fern ab studentischer
Fantastereien, nicht immer Plattforumunabhängig (portabel)
funktioniert, hat J2ME (handy) längst bewiesen.
wie man auf
http://www.arm.com/products/CPUs/ARM1026EJS.html
sieht ist es für manche arm kein problem java aus zuführen, denn sie
können das schon hardware mässig. allerdings dürfte es probleme geben
einen 1026ej-s core zu bekommen und das ganze zu vernünftigen preisen
in kleineren stückzahlen.