Hallo Ich arbeite derzeit an einer Java-Applikation für ein Mobilgerät, wo es auf hohe Performance ankommt. Da dringt natürlich sofort die resourcenschonende, prozessornahe Denkweise durch, wie man sie auf Mikrocontrollern lernt. Unter anderem habe ich zahlreiche Bitmanipulationen auf Integern, die extrem oft und schnell durchgeführt werden müssen. Weiterhin werden Daten so speicherschonend wie möglich abgelegt, d.h., jeweils im kleinstmöglichen Datentyp. Weiterhin werde ich massenweise in der Gegend herumpointern (verkettete Listen/Binärbäume). Was mich nun interessiert: Was macht Java daraus? Werden diese Bitmanipulationen ähnlich wie bei einem nativen Programm in wenigen Prozessorzyklen ausgeführt? Belegen die kleineren Datentypen tatsächlich nur den benötigten Speicherplatz? Oder bauscht Java gnadenlos auf? Mir ist klar, dass man mit Java nie ganz an C herankommen wird, aber es interessiert mich halt, ob sich eine prozessornahe Denkweise überhaupt lohnt. Gruss Michael
Mag sein, das es da mehr als einen sinnvollen Standpunkt gibt, aber ich würde sagen, das Java und systemnahe Programmierung nicht zusammengehen. Ja, ich würde sogar soweit gehen, das als Paradebeispiel für eine Unmöglichkeit zu bezeichnen. So wie niedrige 8000m Berge. Was benutzt Du für eine Java-Implementierung? Im allgemeinen wird ein Zwischencode erzeugt, der dann von einer Java Virtual Machine interpretiert wird. Das ist schon per Definition langsamer und entfernt von der Hardware. Es mag aber sein, das es Java-Compiler gibt die Maschinencode erzeugen. Kenne nur keine.
> Mag sein, das es da mehr als einen sinnvollen Standpunkt gibt, aber ich > würde sagen, das Java und systemnahe Programmierung nicht zusammengehen. Naja, das ist doch eine insgesamt sehr allgemeine Antwort, wie man sie in jedem zweiten Java-Thread zu lesen bekommt. Mich interessieren wirklich die ganz konkreten Fragen und Details.
>Im allgemeinen wird ein Zwischencode erzeugt, der dann von einer Java >Virtual Machine interpretiert wird. Das ist schon per Definition >langsamer und entfernt von der Hardware. hui also wenn schon klugscheissen, dann richtig! lies nochmal ganz gründlich nach :D tipp was nicht passt: zwischencode; Virtual Machine "interpretiert" scheint du hast ein paar dinge schlicht unvollständig gelesen und hast somit einabsolut verfälschtes bild tipp: basic zum beispiel wäre interpretiert... mach deine hausaufgaben besser! dein halbwissen ist exzellent... @mr. chip: stichwort: JNI java native interface beispiel anhand c: zeitkritische elemente, die man nicht dem compiler überlassen möchte realisiert man bei c-projekten in assembler ...in java kannst du dir über JNI eigene APIs in c bzw. c mit inlineassembler realisieren... das ist was du suchst damit gibst du jedoch die plattformunabhängigkeit auf, es sei denn, du compilierst deine eigene API jeweils auf den unterstützten systemen...
> ...in java kannst du dir über JNI eigene APIs in c bzw. c mit > inlineassembler realisieren... das ist was du suchst Leider nicht in J2ME. Und, wie erwähnt, mit der Plattformunabhängigkeit bzw. der einfachen Portierbarkeit ist's dann auch hin. Dann kann ich gleich alles in C schreiben.
@ ... na dann sag' mal was die vm macht, interessiert mich nämlich brennend. und dann erklär' mir bitte den unterschied zu c64 basic (nicht den sch.. mit "sicherheit" und co, sinder den teil mit "interpretiert")
@ zwieblum ... will doch bloss trollen. Interpretieren oder compilieren ist eigentlich der grosse Unterschied. Wenn man eine interpretierende VM (z.B. NanoVM) nimmt, dann interpretiert die eben. Führt also jeden Bytecode aus, in dem sie die Wirkungen erzeugt. Andere VMs kompilieren beim Start Codeabschnitte des Bytecodes (Zwischencodes) und führen den compilierten Code aus. Wieder andere VM führen den Zwischencode aus. Man könnte streiten ob das interpretation ist. Jedenfalls ist es keine Compilation. Bei FORTH z.B. finde ich die Begrifflichkeiten nicht unbedingt klar. Es wird nicht kompiliert, aber bei den Low-Level-Worten wird Code ausgeführt, der vorher kompiliert wurde.
>... will doch bloss trollen.
:D meistens funktionierts :D
...klar, kann man sagen das java interpretiert wird.
im detail habe ich jedoch noch gelernt, das "interpretierte" sprachen,
den programmcode erst zur programmlaufzeit parsen und -interpretieren-
das der bytecode von java auf einer softwareemulierten maschine
schneller ist als "interprtiert" lauft ist wohl klar, (genauso klar, das
nativer code schneller ist als java...)
wollte nur JNI vorschlagen, schade das es nicht j2me geht...
ich denke mal hier fehlen ein paar Beispiele. Bei java kann ja bis auf die primitiven datentype jeder Variable null sein, das muss also auch irgendwo gespeichert und geprüft werden. Dann soweit ich weiss mach java auch overflow checks die auch zeit und resourcen kosten. Leider ist man dann immer doch von der VM Abhängig, jeder version kann sich anders bezüglich optimierung verhalten. Aber ich glaube bei java muss man nicht so sehr viel versuchen dem compieler zu helfen guten code zu erzeugen, die VM Optimiert schon sehr gut. Wie pointers du in java rum, in java sind es doch eh alles Referenzen?
> scheint du hast ein paar dinge schlicht unvollständig gelesen und hast > somit einabsolut verfälschtes bild > tipp: basic zum beispiel wäre interpretiert... > mach deine hausaufgaben besser! dein halbwissen ist exzellent... Mach mal Deine Hausaufgaben selbst, BASIC kann je nach Tool auch kompiliert werden. Siehe z.B. QBX, mit welchem eine schöne Exe gemacht werden kann. Sogar Visual Basic mit .NET wird kompiliert (just in time) und nicht interpretiert.
mr.chip wrote: >> Mag sein, das es da mehr als einen sinnvollen Standpunkt gibt, aber ich >> würde sagen, das Java und systemnahe Programmierung nicht zusammengehen. > > Naja, das ist doch eine insgesamt sehr allgemeine Antwort, wie man sie > in jedem zweiten Java-Thread zu lesen bekommt. Mich interessieren > wirklich die ganz konkreten Fragen und Details. Also bitmanipulationen gehen recht schnell. Was datentypen angeht: Der kleinste Datentyp den java kennt ist 32bit. double und long belegen 64bit. Kleinere Datentypen (short, byte und boolean) werden intern meistens auf 32bit abgebildet (meistens deshab da das von der VM abhängen KANN). Näheres kann dir da die VM Spezifikation sagen wenn du dich da einlesen magst, ist eigentlich eine ganz interessante Lektüre. Die genaue Umsetzung der Operatione hängt natürlich von der verwendeten VM ab, JNI ist wie schon erwähnt eine Möglichkeit java an Systemfunktionen zu binden die normalerweise nicht zugriffsfähig sind.
Klugscheisser wrote: > Im allgemeinen wird ein Zwischencode erzeugt, der dann von einer Java > Virtual Machine interpretiert wird. Das ist schon per Definition > langsamer und entfernt von der Hardware. Es wird P-Code erzeugt, das ist richtig. Aber moderne JVM-Implementierungen nutzen JIT-Compiling und Profiling. Die Aussage ist so also so nicht ganz richtig. Aber "systemnah" ist schon deswegen nicht moeglich, weil man in Java nur die VM sieht. Und die VM hat ihre eigene Architektur! Da wird es schon schwierig (bis unmoeglich), wenn man Prozesse ausserhalb der VM manipulieren will, da dies OS-spezifisches Vorgehen benoetigt. Michael
mr.chip wrote: Dir geht es also um effizientes Java... > Unter anderem habe ich zahlreiche Bitmanipulationen auf Integern, die > extrem oft und schnell durchgeführt werden müssen. Ja, und? > Weiterhin werden > Daten so speicherschonend wie möglich abgelegt, d.h., jeweils im > kleinstmöglichen Datentyp. Weiterhin werde ich massenweise in der Gegend > herumpointern (verkettete Listen/Binärbäume). Es gibt keine Pointer in Java. > Was mich nun interessiert: Was macht Java daraus? Werden diese > Bitmanipulationen ähnlich wie bei einem nativen Programm in wenigen > Prozessorzyklen ausgeführt? Belegen die kleineren Datentypen tatsächlich > nur den benötigten Speicherplatz? Oder bauscht Java gnadenlos auf? Wenn Du diese Details wissen willst schaust Du Dir die Architekturbeschreibung der verwendeten JVM an. Ausserdem sind dort noch plattform- und OS-spezifische Unterschiede zu verzeichnen. > Mir ist klar, dass man mit Java nie ganz an C herankommen wird, aber es > interessiert mich halt, ob sich eine prozessornahe Denkweise überhaupt > lohnt. Nein, da Du den Prozessor nicht siehst und nicht die Implementierungsdetails der VM kennst. Selbst wenn Du sie kennen wuerdest, koenntest Du Dich nicht darauf verlassen, dass sie in diesem Zustand bleiben. Das ist der Grundgedanke von Abstraktion.
> JVM-Implementierungen nutzen JIT-Compiling und Profiling. Die Aussage > ist so also so nicht ganz richtig. Aber "systemnah" ist schon deswegen > nicht moeglich, weil man in Java nur die VM sieht. Jein. Wie du richtig sagst, gibt es den JIT - und der baut eben nativen Maschinencode. Wenn Java es richtig erkennt - und das ist im Prinzip das wesentliche meiner Frage - könnten dadurch bitweise Operationen praktisch mit nativer Geschwindigkeit abgearbeitet werden.
Die VM braucht immer Overhead, aber primitive Operationen werden auch nicht in komplexe auf der Zielarchitektur uebersetzt. Der Grundsatz: Einfacher (bzw. Hardware-Befehl vorhanden) ist schneller, zaehlt auch hier. Sofern natuerlich der Zielprozessor entsprechende Befehle unterstuetzt. Wenn Du wirklich wissen willst, wie schnell Deine SW ausgefuehrt wird und ob Beschleunigung durch JIT durchgefuehrt wird: Es gibt diverse Profiler fuer Java, die Dir das verraten. Wenn es Dir aber nur um Geschwindigkeit und Optimierung fuer eine spezielle Architektur geht bist Du mit Java sowieso falsch beraten.
> Wenn es Dir aber nur um Geschwindigkeit und Optimierung fuer eine > spezielle Architektur geht bist Du mit Java sowieso falsch beraten. Nein, darum geht es nicht. Aber ich möchte halt auch in Java effiziente Programme schreiben. Werde mir wohl die Profiling- und JIT-Dokumente mal ansehen.
Wenn wir gerade dabei sind: Gibt es eigentlich eine schöne Variante, um in Java Bitfelder einzugeben? So frei nach 0b0001111 wie man es aus dem GCC kennt?
es gibt ziemlich viele möglichkeiten ein j2me prog. zu optimieren. das erste wäre sicher gleich mal der obfuscator oder wie das ding heisst. das ding baut ein paar sehr interessante sachen zusammen und optimiert im idealfall schon ein, zwei sachen. das nächste ist sicher das zeichnen. kompletter redraw oder nur einzelne teile. das musst du aber selber wissen... irgendwo solls ja auch einfach werden. möglichst keine objekte erzeugen sondern das ganze teil in die hauptklasse werfen. kleine bilder zu grösseren zusammenfassen loop unrolling kann auch ein bisschen was rausholen (kannst ja n test prog schreiben) shifting -> ja das jar auseinander nehmen und mit einem anderen packer wiederzusammenfügen. diese funktionieren teilweise etwas besser... sprich minim kleinere Datei am meisten habe ich mich mit grösseren arrays rumgeärgert die dann ausgegeben (sprich gezeichnet) werden sollten. viel zu langsam, machs einfach nicht. nimm n bitmap oder machs über kleine quadrate oder sowas ich habe mich nie an den vorschlag gehalten alles in die hauptklasse zu werfen, das war mir zu blöd(dann bräuchte ich keine oo sprache zu benutzen). aber ich hab immer darauf geachtet, dass ich ein objekt mehr als nur einmal verwenden kann. so dass es nicht in den garbage collector rein kommt. Ah, und jedesmal wenn Du ein "fertiges" objekt von J benutzen willst, schau dir nochmal den source davon an. wenn ein objekt 150 methoden hat und du nur 2 brauchst reiss dir den arsch auf und mache eines mit genau nur den zweien. mit threading kannst du sehr schön ein paar sachen laden und den user gezielt ablenken. so wirkt es auch als wäre dein prog. sehr schnell. und je öfer es geht desto besser: als final deklarieren letzen endes solltest du dein ding erstmal zum laufen kriegen und dann optimieren falls es nötig wird. Vielleicht ists nähmlich gar nicht nötig. eigentlich sollte man den ganzen scheiss auch bei ganz normalen J(se) machen. aber die meisten sind zu faul oder aber schnallen es einfach ned. das beste beispiel was ich gesehen habe war n schachbrett, dass aus jbuttons bestand!!! kein wunder das viele immer noch sagen j ist langsam, genau solche sachen sind der grund. ich denke mal das sind die antworten die du gesucht hast und nicht der 90% müll da oben
mr.chip wrote: > Wenn wir gerade dabei sind: Gibt es eigentlich eine schöne Variante, um > in Java Bitfelder einzugeben? So frei nach 0b0001111 wie man es aus dem > GCC kennt? Du kannst eine String in verschiedenen "Basen" parsen lassen:
1 | final int bin = Integer.parseInt("011110", 2); |
2 | final int hex = Integer.parseInt("ABC12", 16); |
3 | final int b20 = Integer.parseInt("AGHIJ", 20); |
4 | System.out.println("Bin: "+bin); |
5 | System.out.println("Hex: "+hex); |
6 | System.out.println("B20: "+b20); |
Wenn mans braucht ;) Hexadezimal kann man (wie bei C auch) direkt eingeben, bei Binär gehts glaub ich nicht mag aber auch vom Compiler abhängen.
> bei Binär gehts glaub ich nicht mag aber auch vom Compiler abhängen.
Das tut es bei C ja auch. C kennt keine Binärnotation, das ist nur eine
proprietäre und nicht empfehlenswerte Erweiterung mancher Compiler (gcc
und ein paar andere).
Michael G. wrote:
> Es gibt keine Pointer in Java.
Jede nicht primitive Variable in Java ist ein Pointer.
1 | String s="hallo"; |
2 | s = null; |
3 | l = s.length(); // -> java.lang.NullPointerException |
>Es gibt keine Pointer in Java. >Jede nicht primitive Variable in Java ist ein Pointer. Beides Stimmt ;o) Es gibt Zeiger, aber keine Zeigerarithmetik
@Rufus t. Firefly: "... proprietäre ..." ist es nicht, siehe dazu die definition von "proprietär": 1: one that possesses, owns, or holds exclusive right to something ; specifically : proprietor 12: something that is used, produced, or marketed under exclusive legal right of the inventor or maker ; specifically : a drug (as a patent medicine) that is protected by secrecy, patent, or copyright against free competition as to name, product, composition, or process of manufacture3: a business secretly owned by and run as a cover for an intelligence organization wenn's gcc macht, kann man sich ziemlich sicher darauf verlassen, dass das "feature" nicht ausstirbt.
Michael G. (linuxgeek) wrote: > Es gibt keine Pointer in Java. Andreas Schwarz (andreas) (Admin) wrote: > Jede nicht primitive Variable in Java ist ein Pointer. herrlich, wenn sich Antworten derart widersprechen :) Deshalb mal ne Frage an die Profis hier. Ich habe java Programme immer noch als vergleichsweise träge in der Ausführung im Sinn. Jetzt lese ich immer wieder das dem schon lange nicht mehr so ist. Warum findet man (auch wieder im Vergleich) so selten Anwendersoftware für Windows die in java geschrieben ist und die gleichzeitig unter Linux läuft? Woran liegt das, dass nicht auch eagle in java geschrieben ist? Oder meint wegen OpenOffice, oder die vielen nützlichen Tools die das Windows Leben so erleichtern, die alle nicht in java geschrieben sind. Namhafte Programme wie beispielsweise Audacity oder VirtualDub, wie XnView oder IrfanView, VLC Media Player, TrueCrypt usw. usw. sind teils als cross platform SW mit Hilfe von QT geschrieben, aber alle nicht in java. Wozu wird eigentlich überhaupt QT und WxWidgets verwendet, wenn java das alles wuppt? Wie viel Software rund um Mikrocontroller ist in java geschrieben? Doch kaum was oder? Woran liegt das, wenn java inzwischen eine so toll und schnelle Programmiersprache ist? Grüße
Nur weil Du keine Java-Applikationen kennst, heißt das noch lange nicht, daß es keine gibt. Es gibt da die ein oder andere völlig bedeutungsloas Software, die Java einsetzt, stark darauf basiert oder sogar komplett darin geschrieben ist. Z.B. Oracle, das findest Du natürlich nicht unbedingt auf 'nem Microcontroller. Das bringt standardmäßig eine eigene JVM mit, damit der Anwender ein paar kleine Spielereien umsetzen kann. Dann LotusNotes, eine völlig unbedeutende GroupWare. Diese Software wird von den Kunden auf die eigenen Bedürfnisse angepasst. Mit Java. WebSphere, von der selben Software-Klitsche (IBM), komplett in Java geschrieben. Ach ja, da gibt es noch die 10 Mann-Firma aus Walldorf mit ihrer völlig bedeutungslosen Unternehmenssoftware SAP R3. Auch Java. Dann, um mich mal wider etwas in Richtung richtiger Software zu begeben: die Entwicklungsumgebungen Eclipse und NetBeans. 100% Java. Aus dem Web-Umfeld fällt mir noch der völlig bedeutungslose ApplicationServer JBoss ein. Schon wieder Java. Aber du hast Recht. Auf einem Microcontroller läuft es nicht wirklich...
Fragender wrote: > wie beispielsweise Audacity oder VirtualDub, [...] VLC Media Player, > TrueCrypt usw. usw. sind teils als cross platform SW Also wenn man mal etwas nachdenkt sind das alles Anwendungsfälle wo man massiv Auf sehr systemspezifische Funktione zugreift (VirtualDub+VLC nutzen z.B. die Windows Audio/VideoCodecs), TrueCrypt emuliert ein Dateisystem... btw.. VLC gibt es (dank JNI) auch für Java, dann aber natürlich nicht Plattformunabhängig. > Wozu wird > eigentlich überhaupt QT und WxWidgets verwendet, wenn java das alles Weil immer mehr Leute merken das es doch noch andere Betriebssysteme gibt ;) > wuppt? Wie viel Software rund um Mikrocontroller ist in java > geschrieben? Doch kaum was oder? Woran liegt das, wenn java inzwischen > eine so toll und schnelle Programmiersprache ist? Sicher könnte man nen Mikrocontroller auch mit Java Programmieren da gibt es sogar spezielle Controller für. Und die meisten Handys sind inzwischen auch Java fähig wenn nicht sogar Java basiert. Es gibt sogar ne JavaVM für den Mega8, und man könnte theoretisch auch in Java einen MicroController programmieren, der Compiler müßte diesen Code (wie bei C, C++, Basic,...) nur geeigent in Mashinenbefehle umsetzen, aber dafür war/ist Java einfach auch nicht gedacht, wengleich es auch möglich wäre.
Markus wrote: > Nur weil Du keine Java-Applikationen kennst, heißt das noch lange nicht, > daß es keine gibt. Dass er sich vor allem fuer Anwendersoftware fuer Windows interessiert, haette dir ja auffallen koennen. Trotzdem nennst du fast nur Software aus dem Business- und Serverbereich. Falls dir der Unterschied nicht bewusst ist: Bei letzterer werden a) die Endanwender selten gefragt und b) besteht eine voellig andere Kosten/Nutzen-Verteilung - ist die Serverapplikation zu langsam, wird eben noch eine Kiste dazu gestellt. > Es gibt da die ein oder andere völlig bedeutungsloas Software, die Java > einsetzt, stark darauf basiert oder sogar komplett darin geschrieben > ist. Z.B. Oracle, das findest Du natürlich nicht unbedingt auf 'nem > Microcontroller. Das bringt standardmäßig eine eigene JVM mit, damit der > Anwender ein paar kleine Spielereien umsetzen kann. "Kleine Spielereien" drueckt es sehr gut aus. Also kaum ein gutes Beispiel. Der relevante Teil ist definitiv kein Java. > Dann LotusNotes, > eine völlig unbedeutende GroupWare. Diese Software wird von den Kunden > auf die eigenen Bedürfnisse angepasst. Mit Java. LotusNotes war schon immer langsam und nervig und das wurde mit Java nicht besser. Allerdings auch nicht schlechter. Ob's intern wirklich 100% Java ist, weiss ich nicht... Und fuer den Anwender zuhause voellig unbedeutend. > WebSphere, von der > selben Software-Klitsche (IBM), komplett in Java geschrieben. Und mindestens genauso gut. Keine Anwendersoftware, nicht schnell, ist aber auch im Einsatzgebiet nicht Prioritaet. > Ach ja, da > gibt es noch die 10 Mann-Firma aus Walldorf mit ihrer völlig > bedeutungslosen Unternehmenssoftware SAP R3. Auch Java. Das ist schlicht und einfach falsch. Mich beschleicht der Verdacht, dass du einige der genannten Systeme nur am Rande kennst. Abgesehen davon ist SAP in keiner Variante ein gutes Beispiel fuer Performance. > Dann, um mich > mal wider etwas in Richtung richtiger Software zu begeben: die > Entwicklungsumgebungen Eclipse und NetBeans. 100% Java. Einzig Eclipse hat in diesem Vergleich ueberhaupt Relevanz, da das halbwegs zum Thema Anwendersoftware passt. Und tatsaechlich, es ist ganz gut benutzbar - solange die Projekte nicht zu gross werden. Aber einer gewissen Groesse faengt es gnadenlos an zu nerven. > Aus dem > Web-Umfeld fällt mir noch der völlig bedeutungslose ApplicationServer > JBoss ein. Schon wieder Java. Und schon wieder keine Anwendersoftware. > Aber du hast Recht. Auf einem Microcontroller läuft es nicht wirklich... Sollte einen schon nachdenklich stimmen, dass Java sich weder in der Form der Applets, noch als Applikationen, sondern ausgerechnet bei Servern etablieren konnte. Wo es auf die oft genannten Staerken wie Portabilitaet und GUI so gar nicht ankommt.
Als Beispiel für Java ausgerechnet Oracle zu nennen war nicht sehr schlau. Der Installaller ist ein sehr gutes Beispiel wie langsam eine Java-Gui ist. Das ganze noch über RDP und man sieht schön wie den oberfläche in Zeitlupe gemalt wird. Bei Eclipse muss man wirklich sagen das man den unterschied kaum merkt.
Peter Stegemann wrote: >> Aber du hast Recht. Auf einem Microcontroller läuft es nicht wirklich... > Sollte einen schon nachdenklich stimmen, dass Java sich weder in der > Form der Applets, noch als Applikationen, sondern ausgerechnet bei > Servern etablieren konnte. Wo es auf die oft genannten Staerken wie > Portabilitaet und GUI so gar nicht ankommt. Wie gesagt es GIBT Java fähige Controller (der AVR32 z.B. kann auch nativen Java code ausführen) und gerade im Handy bereich ist Java sehr wohl ein Thema bzgl. Applikation und GUI!
ja schon, aber Java ME. und das ist nicht das, was man sich so landläufig unter java vorstellt.
Das einzig tolle Feature an Java is doch "Compile once, run everywhere." Und das erkauft man sich halt durch die VM Overhead. Das was man allgemein als Plattform unabhängig bezeichnet, "Write once, compile everywhere.", kann C++ genauso.
Kurz noch zum Thema "systemnah" mit Java. Ich belege gerade einen Kurs, in dem es um Chipkartenprogrammierung mit Java geht (Javacards). Auf diesen Karten wird tatsaechlich eine kleine JVM ausgefuehrt, die einen (konvertierten) Java-Bytecode ausfuehrt. Trotz alledem sind die Architekturdetails durch die JVM verborgen. Und es geht dort auch nicht um harte Echtzeit, sondern eingebettete Programmierung. Dedizierter Kryptoprozessor ist auch vorhanden. Was ich damit sagen will: Java laeuft durchaus auf Mikrocontrollern, der Sprachumfang ist aber empfindlich eingeschraenkt und natuerlich ist die Standard-Lib nicht verfuegbar (es gibt z.B. kein java.lang.String). Threads und solche Spielereien sind auch nicht moeglich. Und es gibt nur eindimensionale Arrays.
Rayk wrote: >>Es gibt keine Pointer in Java. >>Jede nicht primitive Variable in Java ist ein Pointer. > Beides Stimmt ;o) > Es gibt Zeiger, aber keine Zeigerarithmetik Richtig... und somit sprechen wir hier bestenfalls von einer Referenz ;)
Fragender wrote: > Deshalb mal ne Frage an die Profis hier. Ich habe java Programme immer > noch als vergleichsweise träge in der Ausführung im Sinn. Jetzt lese ich > immer wieder das dem schon lange nicht mehr so ist. Warum findet man > (auch wieder im Vergleich) so selten Anwendersoftware für Windows die in > java geschrieben ist und die gleichzeitig unter Linux läuft? Woran liegt > das, dass nicht auch eagle in java geschrieben ist? Weil zu der Zeit, als Eagle entwickelt wurde, Java wahrscheinlich noch ein "gleam in the programmer's eye" war. > eigentlich überhaupt QT und WxWidgets verwendet, wenn java das alles > wuppt? Wie viel Software rund um Mikrocontroller ist in java > geschrieben? Doch kaum was oder? Woran liegt das, wenn java inzwischen > eine so toll und schnelle Programmiersprache ist? Java laesst sich relativ leicht decompilieren. Es gibt Obfuscater, die erzeugen aber so einige Probleme. Ausserdem ist das klassische Swing teilweise doch etwas haesslich, wenn auch flexibel. Sun sollte mal am L&F arbeiten, dann wird Java sicherlich noch weiter vordringen. Gruss, Michael
Peter Stegemann wrote: >> Es gibt da die ein oder andere völlig bedeutungsloas Software, die Java >> einsetzt, stark darauf basiert oder sogar komplett darin geschrieben >> ist. Z.B. Oracle, das findest Du natürlich nicht unbedingt auf 'nem >> Microcontroller. Oracle in Java geschrieben... ja, is schon klar, ne? ;) Es wuerde allerdings so einiges erklaeren, wenn es so waere :D >> Dann, um mich >> mal wider etwas in Richtung richtiger Software zu begeben: die >> Entwicklungsumgebungen Eclipse und NetBeans. 100% Java. Eclipse ist nicht in Java geschrieben. Das sieht man auf den ersten Blick.
Michael, manchmal würde es nicht schaden wenn du dich vor dem Aufstellen irgendwelcher Behauptungen erst informieren würdest.
Na dann weiss man zumindest, wo diese "SWT encountered a fatal error..."-Dialoge herkommen :D
Es wuerde auch nicht schaden, wenn er ordentlich quoten wuerde.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.