Java Einstieg.. wie geht das?

Guten Tag Forum

Zuerst, ich habe die Suche bemüht, und ich habe auch einiges an Antworten daraus gezogen.

- Java ist Plattformunabhängig weil ein JavaProzessor simuliert wird.
- Um Java zu entwickeln braucht man einen Editor und einen Compiler.
- Um Java Programme auszuführen braucht man die Java Virtual Machine ("JavaProzessor")

Es gibt einen offizielle Entwicklungs Umgebung von Sun die sich JDK nennt. Davon gibt es eine Free version. Ist dies Brauchbar? Oder wurde viel wichtiges gestrichen?
Die Java Virtual Machine wird einem eh nachgeworfen.

Zu den Fragen:

Was für einen Compiler brauch ich? (oder gibts es nur denjenigen in JDK)
Was für einen Editor soll ich nehmen? (persöhnliche Empfehlungen gesucht)

Kennt jemand gute Einstiegs-Tutorials für Java? (persöhnliche Empfehlungen gesucht) Ich arbeite nicht gerne mit Büchern.
Hat jemand gute tutorials oder infos zu MicroJava? (persöhnliche Empfehlungen gesucht) Ich möchte was auf meinem Natel programmieren, später.

Ich gedenke unter WindowsXP zu entwickeln.

Aktueller Recherche:
http://java.sun.com/j2se/1.5.0/download.jsp (JDK)
http://www.galileocomputing.de/openbook/javainsel/ (erst eingelesen, schaut gut aus)
http://de.wikipedia.org/wiki/Java_2_Platform_Micro_Edition (was wohl)
http://www.javabuch.de/ (seh ich noch nicht ganz durch.. kommt noch. Ist das veraltet?)

Nachtrag:
Es gibt nicht nur den einen Java Compiler.
Her ein GNU Compiler: http://gcc.gnu.org/java/
 
Endlich einer der sich vor dem Fragen etwas bemüht hat.

1. Das JDK von Sun ist gut.
2. Als Editor kannst du für den Anfang jEdit nehmen später als IDE Eclipse.
3. Tutorial Java ist auch eine Insel
 
jupp stimme dem zu.
Aus persönlichen Erfahrung würde ich dir auch den Sun java compiler empfehlen. Mit dem JDK hast du die komplette Java Bib auch noch dabei.

JEdit ist zwar ein echt guter Editor aberich würd auch für den Anfang Eclipse empfehlen da es Codevervollständigung und direktes lesen in der Java-API anbietet. Außerdem ist eclipse gar nicht so kompliziert wie alle sagen und für jemaden der so fragen stellt dürfte das ja kein prob sein ;)
 
Ein Rat von mir: Bevor du überhaupt eine Zeile Code schreibst solltest du dich erstmal ausgiebig mit den Grundlagen von OOP beschäftigen, ansonsten wirst du niemals anständig in Java programmieren können. Ist zwar ein trockenes Thema aber fundamental wichtig.

Als IDE kann ich nur Eclipse empfehlen, weil sie imho die beste ist.

odigo
 
Was ist Java-API?
Ich habe das im Zusammenhang mit XHTML Schnittstelle hier gelesen, aber was ist die definition von diesem Begriff?

Was ist eine IDE?
Die google suche wird etwas erschwert, da der gleich abgekürzte Festplattencotroller doch ab und zu vorkommt im Internet ;)

OOP ist ObjektOrientiertesProgramieren, nicht?
Naja.. wie lernt man was oop ist ohne zu programmieren?

Für mich war bis anhin PHP nicht objektorientert weil man die TextInputs mit $_POST auslesen muss, und VB Objektorientiert weil man textinput1 ansprechen kann. Aber das wird wohl nicht die ganze geschichte sein..
Kann mir da jemand weiterhelfen? was soll ich lesen? was soll ich tun um das zu verstehen?

Zu guter letzt hätte ich dann noch eine grundsätzliche Frage: Was kann Java?
Wofür setzt man Java ein, wann werden Maschinensprachen ? la c++ oder ähnliches Benutzt (habe gelesen dass c++ bis zu 10mal schneller ist wegen der Virtual Machine... naja) Und habe ich gut daran getan als erste wirkliche Lokalsprache Java zu wählen? (daraus folgt zB dass ein OS nie nur auf Java basieren kann, da ja auf irgendetwas diese JavaVirtualMachine laufen muss. Ausser man hätte solche prozessoren zur Verfügung)


Könnte ich mit Java ein Programm .. irgendwas mit ftp .. eine sog. PubScanner schreiben?
Was geht sicher nicht mit Java?
Gibt es Wege (meinetwegen auch mit experimentellem Status) um JavaCode in eine exe zu kompilieren, oder brauchen alle Leute denen ich meine Programme zugänglich machen möchte die VirtualMachine? (wahrscheinlich eine dumme Frage, aber das ist halt das Schöne an VB..)

Bis anhin kann ich PHP und habe mal was mit VB experimentiert.
 
Die Erklärung zu oop auf http://www.javabuch.de finde ich ziemlich verständlich.
http://de.wikipedia.org/wiki/Oop
Eine IDE ist eine integrierte Entwicklunsgumgebung. (http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung)
Java ist nicht für systemnahe Anwendungen geeignet, da es plattformunabhängig ist. Auch für geschwindigkeitskritische Anwendungen ist Java nicht zu empfehlen, da der Zwischencode erst von der JVM interpretiert werden muss, was zu Geschwindigkeitseinbußen führt.
Ein gutes Einsatzgebiet für Java sind z.B. Netzwerkanwendungen.
Es gibt diverse Programme(z.B. Excelsior Jet), die Java zu einer Exe kompilieren, jedoch wird die Exe recht groß. Außerdem geht dadurch einer von Javas größten Vorteilen, die Plattformunabhängikeit, verloren.
 
Danke an alle die mir bis anhin geholfen haben.

Lesco: Sehr hilfreiche Links... danke dafür.
Ich werte dein "Netzwerkanwendungen" einfach mal als Ja auf mein "Pub Scanner" ;)
 
Ja hast du, aber ich dachte es wäre unhöflich danach zu drängeln. :)

Noch eine Frage:
Java Virtual Machine vs. Microsoft Virtual Machine

MS hat ja seine Version wegen Lizenzproblem nichtmehr weiterverbreiten dürfen. Korrekt?
Ist seit damals diejenige von Java Platzhirsch oder gibt es "alternativ projekte"?
Opensource programme für linux systeme?
Wenn ja, gibt es da unterschiede bzw. Fehler einzelner wie CSS bei IE vs richtigen Browsern?

edit:
Habe mir die Frage gerade teilbeantwortet:
http://java-virtual-machine.net <- steht alles wichtige dazu. denk ich mal.
 
Also, du vergleichst Java, eine Programiersprache, mit dem .net framework, einer Entwicklungsumgebung? oO
Da seh ich jetzt aber nicht durch... worauf willst du hinaus?

Eben, im Thread nebenan wurde nach einem SystTrayIcon fürn C++ Programmcode gefragt.
Ist das in Java auch möglich, oder wäre das zu Maschienennah?

Anscheinend verwende ich bis anhin kein Programm dass in Java geschrieben ist.
Ich habe keine JVM. Aber, ich bin immernoch etwas skeptisch gegenüber dieser Sprache.

Womit sind Winamp / FlashFXP / Firefox geschrieben?
Anscheinand alle nicht in Java... :/
 
.net ist keine Entwicklungsumgebung sondern eine Laufzeitumgebung, ähnlich der VM von Java.
Ich glaube nicht, dass Trayicons mit Java ohne nativen Code möglich sind, doch in diesem Punkt könnte ich mich irren.
Also Firefox ist afaik in C++ und JS(intern wird JS für manche Dinge verwendet) gecodet.
Bei Winamp und FlashFXP würde ich auch auf C++ tippen, bin mir jedoch nicht sicher.
Du könntest die ausführbaren Dateien mal mit peid[1] scannen, damit lässt sich meist der verwendete
Compiler feststellen.
Ein bekanntes Beispiel für ein Java-Programm ist z.B. Eclipse[2].

[1] http://peid.has.it/
[2] http://www.eclipse.org/
 
Noch etwas zu Java :

Java ist keine Hardwareorientierte Programmiersprache wie ASM oder C/C++, du wirst es also nicht hinbekommen in Java ein Betriebssystem zu programmieren.

Java kommt von Sun und ist ein "Standard", daher würde ich die Sun JDK auch nehmen. Mit Java kannst du sehr viel programmieren, vorteilhaft ist, dass besonders die Entwicklung einer GUI in Java sehr unproblematisch ist, anders als z.B. mit WinAPI. Der Programmstart ist in Java langsamer als in z.B. C/C++, da die JVM den Code immer neu übersetzen muss, während du es bei einem C/C++ Programm nur einmal machst. Bei der Ausführung wirst du kaum einen Geschwindigkeitsunterschied erkennen.

Fakt : Die Ultimative Programmiersprache gibt es nicht, ausser ASM :rolleyes:
 
mmh, tut mir leid den ganzen zirkus hier veranstaltet zu haben, aber dann ist
wohl doch c++ die passendere Sprache für mich.. :/

Insofern sehe ich für mich nur einen sehr beschränkten verwendungszweck för java, und eigentlich hat das programm bis auf die plattformunabhängigkeit für mich wohl keine Vorteile. Sehr schade eigentlech.

Ferner, alle Programmcodes die ich bis anhin antraf waren exploits, und diese waren glaub ich auch ausnahmslos in c++ geschrieben. (oder c# aber da habe ich den Unterschied bzw die Vor/nachteile [noch] nicht verstanden)

Ich habe wohl Java schlicht überschätzt. :/

P.s. etwas komisch den Sinn einer Programmiersprache in einem Editor für dieselbige anzugeben, nicht? (eclipse ist doch ein editor?)
 
Was bitte spricht gegen C? Wenn du Ansi/Posix Standards und GTK oder WxWindows verwendest bist du genauso plattformunabhängig. Schlimmstenfalls abstrahierst du deine Datentypen, wenn dir die Bitlänge Sorgen bereitet.

Wenn du unbedingt java coden willst:
"Java ist auch eine Insel" und das Buch von www.javabuch.de sind Bücher, die es kostenlos im Netz gibt. Wenn du die beide durchgearbeitet hast, hast du so ziemlich alle Aspekte von Java kennengelernt. Danach mußt du nur noch dir eigene Projekte suchen.
 
Danke für deine Mühe menace.
Hättest du das Thema gelesen wüstest du dass ich zu einer ähnlich einsicht kam, im verlauf dieses Themas, und im Verlauf meiner weiterführenden Recherchen zu/über java.
 
java wird zur zeit recht haeufig fuer groessere webanwendungen verwendet. da wo php aufhoert faengt java an, mehr oder weniger. im vergleich zu c++ hat java eine groessere klassenbibliothek (die api). wenn man eine gui anwendung in c++ schreiben will muss man sich erst fuer eine bibliothek entscheiden (wxwidgets, qt, mfc, gtk, winapi, etc). qt und wxwidgets sind denk ich mal aehnlich gut zu benutzen wie die java gui api. in java kommt man insgesamt schneller zu einem funktionierenden ergebnis, wuerd ich mal behaupten. sowas wie speicherverwaltung wird dem programmierer komplett abgenommen. mittlerweile gibt es auch features die vorher nur c++ hatte in java (templates, z.b.).

ein systray icon ist nicht wirklich systemnah. es gibt da z.b. ein opensource projekt, was auch nicht nur mit windows sondern auch mit kde funktioniert. http://systray.sourceforge.net/
in der naechsten java version wirds die funktionalitaet auch in der klassenbilbiothek geben (http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/systemtray/).
systemnah waere ein treiber oder ein programm welches code in fremde prozesse einschleust oder sowas.

fuer gui anwendungen wie winamp, etc. wird java selten verwendet. spiele fuer mobiltelefone sind aber mittlerweile ein ziemlich grosser markt. kann mir vorstellen, dass man damit auch ganz gut geld verdienen kann.

c++ kann man schon als universelle sprache betrachten und einfach alle programme damit schreiben. aber c++ ist zwar fuer alles geeignet, aber fuer nichts besonders gut geeignet, imho. letztendlich wird man doch das richtige werkzeug fuer eine aufgabe waehlen (z.b. kleine webapps nicht in c++ sondern vielleicht in php schreiben). also schaden kann es auf jeden fall nicht java zu lernen. danach ist der einstieg in c++ auch leichter (umgekehrt gilt das natuerlich auch).

wenn du mich nach einer empfehlung fragen wuerdest welche sprache du lernen sollst wuerde ich aber weder java noch c++ sagen, sondern python. die bezeichnung "skriptsprache" solltest du nicht allzu ernst nehmen. man kann in python auch "richtige" software schreiben. und fuer webkram ist python imho auch viel besser als php (hauptsaechlich weil php scheisse ist ;).

http://de.wikipedia.org/wiki/Python_(Programmiersprache)
http://pythonwiki.pocoo.org/Tutorial
http://ada.rg16.asn-wien.ac.at/~python/how2think/
http://www.lesher.ws/choose_python.pdf
 
Jede Programmiersprache hat stärken und schwächen, in C++ sind es wie erwähnt die templates, auch Destruktoren sind sehr nützlich, Referenzen, Mehrfachvererbung, überladen von Operatoren usw. .
In Java hat man ein in sich abgestimmtest Paket und Java ist relativ leicht zu erlernen.

Zum Thema zurück ( Bevor hier ein Flame War bezüglich der besten Programmiersprache entsteht ) :

Da du ja die ganzen netten Exploits gesehen hast, dann ist die Programmiersprache deiner wohl eher C als Java.

@Nachteile von C/C++ :

Es gibt nicht sehr viel nützliches im Netz, bezüglich Datenbankanbindungen, Netzwerkprogrammierung oder der Programmierung von Exploits :rolleyes:, da du so etwas ja machen willst, sollte noch etwas ASM sehr nützlich sein.
 
Original von Dawen
Da du ja die ganzen netten Exploits gesehen hast, dann ist die Programmiersprache deiner wohl eher C als Java.

weil wenn du in c programmierst wirst du auch irgendwann exploits fuer deine programme sehen. ;)

Es gibt nicht sehr viel nützliches im Netz, bezüglich Datenbankanbindungen, Netzwerkprogrammierung oder der Programmierung von Exploits

echt? ich wuerde meinen dazu gibts ziemlich viel information. netzwerkprogrammierung ist in c sehr viel muehsamer als in python oder java und man kann eben ganz prima sicherheitsluecken fabrizieren.

da du so etwas ja machen willst, sollte noch etwas ASM sehr nützlich sein.

exploits in c zu schreiben macht imho wenig sinn. dafuer sind skriptsprachen wirklich besser geeignet. vor allem wenn man werkzeuge verwendet die einem die immer wiederkehrenden aufgaben abnehmen. das metasploit framework is da wohl das umfangreichste und bekannteste. zur zeit ist das in perl geschrieben, aber die naechste version wird in ruby implementiert sein. ruby is auch ne sehr schicke sprache. fuer so kleine programme wie exploits muss man die verwendete sprache nicht besonders gut beherrschen. man guckt sich einfach ein beispiel in perl/ruby/whatever an und sieht dann schon wie das ungefaehr funzt. natuerlich muss man c oder c++ koennen wenn man sicherheitsloecher in diesen sprachen verstehen und ausnutzen will.
 
Zurück
Oben