mikrocontroller.net

Forum: Compiler & IDEs Vielleicht bin ich ja verrückt !?


Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einige werden mich jetzt wahrscheinlich als Idiot, Wahnsinniger usw
klassifizieren.

Reine Theorie :

Besteht denn nicht die möglichkeit eine Java VM auf der AVR zu haben ?

Anstelle des Maschinencodes packt man halt das Java Byte-code auf ne SD
Card und lässt es von der VM Interpretieren.
Ok, die Nachteile liegen auf der Hand ( Perfomance ) aber ich sehe auch
vorteile. Dann dann könnte man ja OOP programme schreiben die wunderbar
strukturiert wären.


Gibt es denn so ein Project von den ihr eventuell berichten könntet,
denn ich habe fast nichts im Rindernet gefunden.


mirki

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das ist bekloppt. wenn du unbedingt oop haben willst benutz avrgcc
für c++, dann sinkt zwar immer noch die performance aber immerhin sitzt
nicht noch ein interpreter dazwischen. das ganze speichermässig zu
schaffen dürfte interessant sein. ausserdem gibts fertige uC mit java
vm...

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, so verrückt ist das nicht.

Z.B. gibt es von Maxim ein 8051-Board mit Java:

http://www.maxim.de/quick_view2.cfm/qv_pk/3743

Da es das schon einige Jahre gibt, gibt es bestimmt auch ein Forum
dazu, wo man näheres erfährt.

Das es ein 8051 ist und kein AVR könnte daran liegen, daß dieses 8051
Derivat bis 16MB externen Codespace unterstützt.


Peter

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum dann nicht einen ARM?

Autor: Womisa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mirki,

DU Wahnsinniger. Ich gehöre auch zu dieser Gruppe die darüber
nachgedacht haben. Willkommen im Wahnsinnskreis.
Spaß bei Seite. Beim Atmel scheitert es an den Resourcen. Insbesondere
am benötigten RAM.
Die neuen Handys (z.B.: NOKIA mit MIDP 2.0) haben mächtig was drin und
haben auch einen breiteren Prozessor (16/32 Bit?).
Den SourceCode der J2ME VM kann mann ja downloaden und das portieren
müßte mit einigem Aufwand auch gehen. Aber der Ram ist wirklich zu
klein, selbst für die Mindestanforderungen.
Ich versuche eine HybridVersion zu bauen.
Fernziel:
NANO-PC Board mit Standard Java und die "transparente" Einbindung von
Atmel_Satelliten zur Datenerfassung. Kommunikation zunächst über die
ser. Schnittstelle, später über Ethernet (MODBUS,PPP,HTTP,SOAP,
WEBSERVICE..). Das Atmel-System macht das Notwendigste und was es gut
kann. Das JAVA-PC-System den Rest. So ähnlich wie das oben erwähnte
Dallas System nur eben verteilt und Standard Java. Somit entfällt die
eigene (eingeschränkte)JAVA Portierung.
Ziel: Transparente Einbindung von Externer-Hardware an ein
"Volwertiges-Standard-Java". Irgendo gibt es da ein Project, welches
auf ein NANO-Board ein Standard-Java-System implementieren möchte
welches unter Linux läuft. Dortiges Ziel Opensource==>auspacken==nach
ner 1/4 Stunde Läuft die Java-Umgebung ohne was mit Linux im Hut zu
haben.
Das in verbindung mit nem Atmel wäre gar nicht so schlecht.
Werden die Mikros mächtiger (was zweifelsfrei der fall ist) portiert
man auf diese immer mehr Funktionalität.
Ich weiß jetzt kommen die JAVA Gegner wieder auf die Matte, aber die
ganzen Librarys mit dessen Funktionalität, EntwicklungsTools etc. und
das Ganze kostenlos...
Welchen Programmcode kann man leichter zwischen den verschiedenen
Welten portieren...? Natürlich eine "gehende" VM als Basis...

Falls da ein FanClub zusmmen kommt... Ich bin dabei.

Viele Grüße
Achim

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht fuer denkanstoesse
google: tinyvm

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lasst uns mal das Speicher-Problem als ersten ansatzpunkt betrachten :

1. Hardwareseitig kann man ja max. 64kb adressieren.
2. Um mehr speicher haben zu können muss man ja lediglich das ganze
Softwareseitig adressieren.
3. Mann könnte doch einen Bootloader haben der die VM aus einer
SD-Karte läd.
4. Da jetzt fast keine I/O's mehr vorhanden sind, könnte man doch die
Peripherie an einen I2C hängen.


Ist das falsch was oben steht ?

mirki

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
am AVR ja ;)

also 128KB sollten doch reichen für eine javaVM...

gui usw hat man nicht...also sollte sich meiner meinung nach das locker
ausgehn...

also VM in den flash vom AVR und den code der ausgeführt wird auf die
SD card.... ram... DRAM dran... dürfte kein prob sein da die refeshes
zu timen... und soo schnell ist man so oder so nicht....

anderseits...forth ist angeblich besser brauchbar... nur gefällt mir da
die sprache so seltsam g

73 de oe6jwf

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss nicht, 128 kb halte ich für zu wenig für die VM.

Autor: Womisa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

wie ich sagte, der Speicher ist das größte Problem. Desweiteren muß man
bei einer derartigen Portierung immer Einschränkungen machen. Das sieht
man bei allen Embedded Java Systemen. Leider haben sich diese Systeme
nicht weit verbreitet. Ich hatte da in den letzten Jahren mehr
erwartet.
Ferner muß man diese Portierung immer wiede neu anpassen.
Deshalb verfolge ich derzeit das Ziel eine "kostengünstige" Standard
Hardware mit einer "vollen"  SUN-JVM zu nutzen und übers
Netzwerk,ser. Schnittstel,I2C, USB meine HArdware u.a. Atmega's
transparent einzubinden. Falls dieser Bereich wächst kann mann ja immer
mehr Funktionalität auf die Atmegas bringen, vielleicht auch mal Java.
Derzeit ist das - glaube ich- ohne hohen Zeitaufwand nicht möglich.
Ich habe mich von diesem Gedanken verabschiedet, behalte in jedoch im
Hinterkopf und verfolge die technische Entwicklung.

Viele Grüße
Achim

Autor: Womisa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

das ist das Projekt welches ich beobachte:==>https://jdos.dev.java.net

Viele Grüße
Achim

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es wäre schon ziemlich cool eine abgespeckte VM auf die AVR zu
portieren.

Meine Intension geht mehr in Richtung KI


@ admin : mach mal ne neue rubik für wahnsinnige auf !!

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Es wäre schon ziemlich cool eine abgespeckte VM auf die AVR zu
>portieren.

was ganz schlankes wäre waba...
keine ahnung ob es vom umfang her deinen ansprüchen genügt.

http://www.wabasoft.com/products.shtml

Autor: Stefan D (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Möglichkeit wäre ein Java nach C Converter, der aus Java Code C
Code macht, der dann vom AVRGCC compiliert werden kann.
So etwas habe ich schon für den Texas Instruments Taschenrechner TI89
gesehen aber leider kenne ich keinen für uCs.
Man könnte naürlich einen schreiben.
Da hätte man dann auch keine Probleme mit der Performance, da der Code
ja compiliert wird. Es läuft also keine VM auf dem uC.
Es wäre dann also genauso schnell und speicherlastig wie ein C++
Programm, das mit avrgcc compiliert wird.

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ich weiss nicht. So ein knoverter würde m.E. nach mehr müll
erzeugen und noch langsamere programme erzeugen.

Es geht mir nicht darum in Java zu coden nur weil ich das so geil
finde. Ich will einige vorzüge von Java nutzen was C++ nicht von haus
aus selbst kann, und es soll auch von der VM interpretiert werden.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich will einige vorzüge von Java nutzen was C++ nicht von haus
aus selbst kann

Welche?

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wusste das diese frage kommt. Und auch ehrlich gesagt habe ich auch
mit Dir gerechnet.


OK, eins fällt mir gleich sofort ein.

Objekte in Java werden bei nicht Nutzung ins Nevada geschossen, bei C++
muss man sich selber drum kümmern.

- Garbage-Collection

Aber dennoch muss ich sagen das Software in Java zu entwickeln ist
alles andere als leicht, es ist lediglich einfacher als C.

Autor: Stefan D (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso? Mit einem solchen Konverter könnte man alle Vorzüge von Java
nutzen. Auch Garbage Collection.
Etwas langsamer als ein in C geschriebenes Programm wäre es natürlich,
aber wenn man eine VM benutzt wird es doch noch viel langsamer.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@mirki
wo wären denn die vorteile einer vm bei uC? absicherung ala sandbox
kann es ja nicht wirklich sein

Autor: Gerd Kautzmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dann dann könnte man ja OOP programme
>schreiben die wunderbar strukturiert wären.

hat man dir nicht erklärt dass man OOP auch ohne OOP Sprache schreiben
kann ?

Genauso wie man strukturiert programmieren kann ohne eine Sprache zu
benutzen die das speziell unterstützt.


Vor allem haben viele OOP Programme eine fürchterliche Struktur weil
das klar strukturierte Denken durch ziemlich konfuse Benutzung von
Objekten ausgehebelt werden kann.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Vor allem haben viele OOP Programme eine fürchterliche
> Struktur weil das klar strukturierte Denken durch ziemlich
> konfuse Benutzung von Objekten ausgehebelt werden kann.

ist das dann

a) die schuld des OOP paradigmas
b) die schuld einer sprache die OOP speziell unterstützt
c) die schuld das programmierers ?

Autor: Wolfgang Wäsche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nee so wahnsinnig bist du nicht

denn darüber habe ich auch nachgedacht :-)

Und es gibt ja schon die kleinen Steuerungsrechenr die mit Java laufen

allerdings haben die meisten wirklich mehr CPU Power wie ein AVR

z.b Snap oder Jcontrol

um mal etwas abzuschweifen - ich fände schon eine alternative
Hochsprache für AVRs sinnvoll - warum nicht pascal?

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thomas

ich erlaube mir einen Punkt hinzu zu fügen :


d) bei Java hat Smalltalk alles versaut.

@ Gerd

Ja, du hast recht. Aber OOzuP ohne eine OOP ist die Hölle !?!
Naja, meiner erste richtige sprache war Pascal, dann kam der Umstieg
auf Java, und das viel mir sehr schwer wegen diesen s.... Objekten.
Jemand der zum erstenmal programmieren lernt und dafür Java nimmt,
erlernt dies viel schneller.

Bevor man eine OOP sprache lernen will, sollte man OOP lernen ?!



hmmm, I LOVE PASCAL !!!

Autor: Gerd Kautzmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem Amiga gab es sogar einen Objekt orientierten Assembler ich hab
mich nie damit beschäftigt weiß also nicht ob er alle Aspekte einer OO
Sprache berücksichtigt (glaub ich auch nicht) aber das tut Java ja auch
nicht.

Die Anhänger der OO streiten sich heute noch darüber was sinnvoll ist
und sein muss und was nicht zu OO gehöhrt und nur alles verschlimmert.

So ähnlich wie der Streit der strukturierten Sprachen Anhänger über das
'Goto'

Autor: Gerd Kautzmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, du hast recht. Aber OOzuP ohne eine OOP ist die Hölle !?!

Nein ich meine eher OO mit OO-Sprachen kann die Hölle sein.
OO-Sprachen geben einem die Möglichkeit 'versteckte' Funktionen
einzubauen, durch das ganze Information Hiding und überladen kann es
geschehen, dass man das was ein Programm tut gar nicht mehr sieht.

IMR gibt es so eine 'helloworld.cpp' Parodie.

Das sieht etwa so aus:
main()
{ blub b; }

Der Rest wird in der classe blubb und ihren Constructor versteckt die
sich natürlich in einer anderen Datei befindet.
class blub
{ public:
    create_blubb();
};

blub::create_blub()
{
   cout << "Hello, World\n";
}

Wenn mann OOProgrammierer darauf aufmerksam macht, dass ihre Programme
schlecht lesbar sind, dann kontern sie mit Argumenten dass eine gute
IDE ihnen auch ganz tolle Class Browser zur Verfügung stellen und dass
man nicht wissen muss was in einer Klasse ist da diese mit der IDE
mitgeliefert werden. (einige halten Softwareentwicklung ohne IDE für
schlicht unmöglich)

---

BTW.:

Normale Programmiersprachen verbieten dir nicht, dass du Objekte mit
eigenen Konstruktoren und Destruktoren erstellst, sie zwingen dich nur
nicht diese zu benutzen bzw. sie stellen keine Mechanismen zur
Verfügung damit diese automatisch genutzt werden. Das heist wenn du
einen Konstruktor für die Class blub hast, dann sieht man dass er
irgendwo aufgerufen wird.
main()
{ 
  b=create_blub(); 
}

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Gerd

Dein Beispiel zeigt einen Seiteneffekt (ausgabe von "Hello, World")
der irgendwo in einem Programm an einer Stelle versteckt ist, an der
man ihn nicht vermutet. Dies lässt sich mit allen Programmiertechniken
bewerkstelligen und zeugt lediglich von schlechtem Programmierstil. Mit
OOP an sich hat das wenig zu tun.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deinem "Konstruktor" create_blub() sieht man schliesslich auch nicht
an, das das Ding noch was ausgibt...

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine gute klasse hat methodennamen, die eindeutig angeben, was passiert.
ausserdem ists für code-recycling vorteilhaft oop zu benutzen, da eine
klasse nunmal eine einheit ist, die auch alleine zu funktionieren hat

Autor: Mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich muss meine Meinung ändern. Mit C fühle ich mich frei wie ein
Vogel ( Erinnert mich ein wenig an meine Pascal Zeit ). Ich komme
eigentlich aus der Java und C# Ecke. Unter C kann ich meine eigene
Struktur die ich im Kopf habe fast 1:1 umsetzten, was bei Java nicht so
gut klappt. Habe aber das Problem das ich dazu neige für jeden scheiss
eine Funktion zu erstellen.

mirki

Autor: mirki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand schon die NanoVM ausprobiert ?

Sorry, das ich den alten thread rausgeholt habe

mirki

Autor: Bartli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> @ Thomas
> ich erlaube mir einen Punkt hinzu zu fügen :
> d) bei Java hat Smalltalk alles versaut.

Naja, die Dinge die ich an Java weniger mag, stammen allesamt nicht
von Smalltalk.

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe aber das Problem das ich dazu neige für jeden scheiss
> eine Funktion zu erstellen.
Was heutzutage i.d.R. genau das Gegenteil, nämlich ein Vorteil, ist.
Lieber viele kleine Funktionen mit einer jeweils genau definierten
Aufgabe als eine Monster-Funktion, die zehn Sachen selbst macht.
Funktionsaufrufe sind meist sehr billig, da so kleine Funktionen eh
häufig wegoptimiert werden, falls man nicht gerade Rekursion einsetzt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.