# Ex Visual Basic Programmierer will Erwachsen werden



## RubenZ (3. Jan 2004)

Halllo!


Ich möchte gerne zu Java wechseln, da ich kein Geld habe mir Visual Studio.NET zu kaufen und weil ich keine Lust habe alle Nase lang etwas neues zu lernen weil Microsoft wieder neue Ideen hatte. 

Auf C++ habe ich keine Lust, da GUI Programmierung darunter ein Krampf ist.

Also nun ein paar Fragen:

Kann ich direkt auf die Win32 API zugreifen? Wenn ja, ist das schwierig?

Kann ich meine Programme zu *.exe kompilieren und sie auch ohne Virtual Machine laufen lassen?

Laufen Java Progamme wirklich auf beiden Welten (Linux / Windows)  ohne etwas am Source zu ändern?  

Dank und Gruß

Ruben


----------



## schoppenhauer_entfernt_ (3. Jan 2004)

Also eines kann ich mit Sicherheit sagen. Java ist auch auf Linux verfügbar, solange nur die Virtual Machine installiert ist. Es liegt ja gerade in der Intention von Java, möglichst Plattformunabhängig zu sein.
Weiterhin denke ich nicht, dass man jar-Archive in Exe-Dateien umwandeln kann, die dann ausgeführt werden können. Das wäre ja auch völliger Schwachsinn, weil damit ja die Plattformunabhängigkeit flöten ginge. Außerdem hat die Virtual Machine sowieso jeder installiert. Immer mehrere größere Programme werden in Java geschrieben. Irgendwoanders in diesem Forum hat schon mal jemand gefragt, ob man Jar in Exe umwandeln kann. Müsstest du mal nachschaun. Der hat da ne präzise antwort gegeben.
Direkt auf die Win32API kann man, soweit ich weiß, nicht zugreifen. Wozu auch? Was würde das bringen? Man kann aber soweit ich weiß DLL's ansteuern, aber dabei geht die Plattformunabhängigkeit wiederum verloren. Wem das nichts ausmacht. Da das meißte sowieso in Windows-DLLs verankert ist. Wie genau das geht, weiß ich nicht. Irgendwo in diesem Forum hab ich schon mal was davon gelesen, da war meines Wissens sogar ein Link dabei.  Trotzdem. Ich habe auch schon Zeiten hinter mir, in denen ich mit VB programmiert habe, sogar schon noch tiefer, mit QB. Ich bin praktisch direkt von Basic über ein paar Erfahrungen in Borland C++ und einigem über JavaScript bei Java gelandet, und ich fand es bis jetzt am Besten. Darum kann ich sagen, dass Java eigentlich generell dasselbe (und noch viel mehr) kann, als das, was man normalerweise so mit Visual Basic macht. Nur, dass es Plattformunabhängig ist, und ein wenig Gewöhnungsbedürftig.

Ach ja, das wollte ich noch loswerden. C++, finde ich, ist die dümmste Programmiersprache überhaupt. Es ist unnötig kompliziert, und häufig sind die Compiler auch nicht schnell. C war zwar die erste Compiler-Sprache, aber C++ ist wirklich zum @##!!.
Aber das gehört hier eigentlich nicht hin.


----------



## AlArenal (3. Jan 2004)

Schoppenhauer hat gesagt.:
			
		

> Weiterhin denke ich nicht, dass man jar-Archive in Exe-Dateien umwandeln kann, die dann ausgeführt werden können.



Doch, das geht. 



> Das wäre ja auch völliger Schwachsinn, weil damit ja die Plattformunabhängigkeit flöten ginge.



Plattformunabhängigkeit ist nicht unbedint ein vom Programmierer verlangtes Feature.



> Außerdem hat die Virtual Machine sowieso jeder installiert.



Vielleicht.
Vielleicht auch nicht.
Vielleicht eine ausreichend neue JVM.
Vielleicht auch nicht.



> Direkt auf die Win32API kann man, soweit ich weiß, nicht zugreifen.



Falsch. JNI.



> Wozu auch? Was würde das bringen?



Der Benutzer muss ja nicht merken, dass es kein natives Programm ist. UNd vielleicht möchte man Verbindungen zu anderen Windows-Programmen aufbauen?



> Ach ja, das wollte ich noch loswerden. C++, finde ich, ist die dümmste Programmiersprache überhaupt. Es ist unnötig kompliziert, und häufig sind die Compiler auch nicht schnell. C war zwar die erste Compiler-Sprache, aber C++ ist wirklich zum @##!!.
> Aber das gehört hier eigentlich nicht hin.



Nein, abgesehen davon, dass deine Behauptungen grundlegend falsch sind.


----------



## RubenZ (3. Jan 2004)

Hallo!

Danke an AlArenal für deine Antwort. Bist du nebenberuflich Hellseher? 

Danke an Schoppenhauer für deinen Erfahrungsbericht.

Das mit der *.exe und der Lauffähigkeit OHNE VM ist mir sehr wichtig. Ich möchte kleine Progrämmchen erstellen können, die ohne viel Aufwand irgendwo anders auch laufen. Ohne vorher eine VM oder ein .NET Framework zu installieren. 

Bislang reichen mir eigentlich Skriptsprachen. Nur im Moment habe ich ein größeres Problemchen welches ich gerne mit einer *.exe lösen möchte, da sich Skripte auch nicht immer eignen.

WindowsAPI ist mir auch sehr wichtig. :wink:
Interprogrammkommunikation, aber vorallem Kommunikation mit dem Betriebssystem könnte mal wichtig sein.
Ist das sehr schwierig?


C / C++

Würde ich hauptsächlich Linuxkisten um mich haben, würde ich es lernen. Koste es was es wolle.
Linux und C/C++ gehört quasi zusammen. Man kann verdammt viel lernen, wenn man diese Sprachen beherrscht, da ja (fast) alles im Source vorliegt. 
Habe damals den Zug verpasst bzw. wollte mich nie mit Kommandozeilenprogrammierung auseinandersetzen.
Leider. 


Naja egal. Die Zeit zu trauern ist vorbei. 


Habt Ihr vielleicht einen guten Link zu Verfügung / oder ein Ebook über Java? 
Neben Grundlagen interessieren mich vorallem (Dateisystem, WindowsAPI, Winsock, Datenbankanbindung).
Einfach mal zum drüberfliegen. Wenn ich mich entschieden habe, werden richtige Bücher fällig. Keine Frage 

Gruß

Ruben


----------



## bummerland (3. Jan 2004)

RubenZ hat gesagt.:
			
		

> Habt Ihr vielleicht einen guten Link zu Verfügung / oder ein Ebook über Java?



Klar: http://www.java-forum.net/viewtopic.php?t=245


----------



## Guest (3. Jan 2004)

becstift hat gesagt.:
			
		

> RubenZ hat gesagt.:
> 
> 
> 
> ...




Supper Burschi     

Danke!


----------



## AlArenal (4. Jan 2004)

RubenZ hat gesagt.:
			
		

> Danke an AlArenal für deine Antwort. Bist du nebenberuflich Hellseher?



Nur Hellseherazubi.. 



> Das mit der *.exe und der Lauffähigkeit OHNE VM ist mir sehr wichtig. Ich möchte kleine Progrämmchen erstellen können, die ohne viel Aufwand irgendwo anders auch laufen. Ohne vorher eine VM oder ein .NET Framework zu installieren.



Mit JSmooth kann man aus .jar- oder .class-Dateien auch .exe machen. Alternativ kann man in ein Unterverzeichnis eine JVm legen und angebem, dass diese benutzt werden soll. So kann man seine Programme mit der zugehörigen JVM bzw. den daraus benötigten Teilen ausliefern.
Es gibt auch eine Reihe von kommerziellen Lösungen alles zusammen zu verpacken, teilweise wird der Kram dann auch noch optimiert. Schmeiß mal Google an, da wirst du eine ganze Menge sehr interessante Produlte finden, teils auch mit dowloadbaren Demoversionen oder Versionen für den Privatgebrauch.



> WindowsAPI ist mir auch sehr wichtig. :wink:
> Interprogrammkommunikation, aber vorallem Kommunikation mit dem Betriebssystem könnte mal wichtig sein.
> Ist das sehr schwierig?



Habs selbst noch nciht machen müssen, ich weiß nur dass es geht und stolpere hier und da mal über entsprechende Artikel.

www.java.net
www.onjava.com




> Würde ich hauptsächlich Linuxkisten um mich haben, würde ich es lernen. Koste es was es wolle.
> Linux und C/C++ gehört quasi zusammen. Man kann verdammt viel lernen, wenn man diese Sprachen beherrscht, da ja (fast) alles im Source vorliegt.
> Habe damals den Zug verpasst bzw. wollte mich nie mit Kommandozeilenprogrammierung auseinandersetzen.
> Leider.



Kommadozeilenprogrammierung? Es gibt auch für Unix eine ganze Reihe sehr brauchbarer IDEs 




> Habt Ihr vielleicht einen guten Link zu Verfügung / oder ein Ebook über Java?
> Neben Grundlagen interessieren mich vorallem (Dateisystem, WindowsAPI, Winsock, Datenbankanbindung).
> Einfach mal zum drüberfliegen. Wenn ich mich entschieden habe, werden richtige Bücher fällig. Keine Frage



Unter oben genannten Links finden sich auch als Artikel getarnt immerwieder Kapitel aus Büchern. Ansonsten kann man grundsätzlich Bücher aus dem Hause O'Reilly und Wrox bedenkenlos kaufen. Letztere sind zwar ziemlich teuer, aber jeden Cent wert!


----------



## Stefan1200 (4. Jan 2004)

Also Java Programme laufen bei guter Programmierung ohne Source Änderungen auf Windows, Linux, Solaris und MacOS X. Bei MacOS X und Linux ist im Normalfall immer eine Java Runtime Umgebung in mindestens Version 1.3 vorinstalliert. Bei Windows ist eigentlich bei den meisten auch eine Java Runtime installiert, aber nicht bei allen.
In Zukunft wird sich das aber auch Ändern, da häufig bei den komplett PCs Java demnächst vorinstalliert sein wird.
Mal davon abgesehen wird heute schon sehr häufig Java gebraucht, besonders im Internet.

Durch selbst erstellte Exe Dateien oder Tools wie JSmooth muss zwar noch ein Java Runtime installiert sein, allerdings können dadurch die Java Programme wie eine normale Windows Exe gestartet werden.

Windows API habe ich zwar noch nicht gebraucht, aber ansatzweise soll das gehen. Allerdings bietet auch die Sprache Java die wichtigsten Befehle wesentlich einfacher und angenehmer an, als die M$ API (igitt) ;-).


----------



## RubenZ (4. Jan 2004)

Stefan1200 hat gesagt.:
			
		

> ...
> Durch selbst erstellte Exe Dateien oder Tools wie JSmooth muss zwar noch ein Java Runtime installiert sein, allerdings können dadurch die Java Programme wie eine normale Windows Exe gestartet werden.



Also was denn nu? Braucht man die VM wenn man *.exe haben möchte - oder nicht?  

Wünsche mir als Ergebnis einfach nur eine ausführbare Datei. Kein Installationspaket oder ähnliches. 
Kann man nicht einfach alles in in eine Datei packen? Okay, sie wird ein bisschen größer. Aber egal :wink: 



			
				Stefan1200 hat gesagt.:
			
		

> Windows API habe ich zwar noch nicht gebraucht, aber ansatzweise soll das gehen. Allerdings bietet auch die Sprache Java die wichtigsten Befehle wesentlich einfacher und angenehmer an, als die M$ API (igitt) ;-).



Ja, die wichtigsten Befehle. Aber habe ja eben schon geschrieben, dass eine Interaktion mit anderen Programmen oder der Windows interna manchmal durchaus erwünscht ist...   


Danke

Ruben


----------



## AlArenal (4. Jan 2004)

Google ist dein Freund.


----------



## Nobody (4. Jan 2004)

zu der flötengehenden platformunabhängigkeit bei der erstellung von exe files:

das programm muss nur 1mal programmiert werden und aus einem jar file lassen sich executable files für nahezu alle betriebssystem erstellen und somit kann man das ganze noch voll ausschöpfen. zb bei der netzwerk programmierung kann dies sehr sinnvoll werden. auch spart man dadurch das man das programm nur 1mal schreiben muss ein haufen zeit.


----------



## RubenZ (4. Jan 2004)

Nobody hat gesagt.:
			
		

> zu der flötengehenden platformunabhängigkeit bei der erstellung von exe files:
> 
> das programm muss nur 1mal programmiert werden und aus einem jar file lassen sich executable files für nahezu alle betriebssystem erstellen und somit kann man das ganze noch voll ausschöpfen. zb bei der netzwerk programmierung kann dies sehr sinnvoll werden. auch spart man dadurch das man das programm nur 1mal schreiben muss ein haufen zeit.



Okay. Und womit mache ich das? 

Gruß

RubenZ


----------



## mariopetr (4. Jan 2004)

RubenZ hat gesagt.:
			
		

> Okay. Und womit mache ich das?



sehr gute frage. ich habe mich vor einem jahr damit beschaeftigt 
fuer linux
http://www.redhat.com/support/wpapers/redhat/gcj/gcj.pdf
fuer windows zb excelsior jet

allerdings haben beide (waren noch ein paar mehr) probleme mit reflection (fast nicht nutzbar), corba (weis ich nicht ob es an der reflection liegt), swing (darstellungsprobleme), imageoperations (seltsames verhalten beim scaling/transformieren)


----------



## Reality (4. Jan 2004)

Bezüglich Exe-Dateien.
Mit JBuilder geht das, aber dazu braucht man die Runtime.

Liebe Grüße
Reality


----------



## RubenZ (6. Jan 2004)

Reality hat gesagt.:
			
		

> Bezüglich Exe-Dateien.
> Mit JBuilder geht das, aber dazu braucht man die Runtime.
> 
> Liebe Grüße
> Reality



Nur auf dem Rechner wo Jbuilder installiert ist, oder auch auf denen wo man die *.exe dann laufen lassen möchte?

Gruß

Ruben


----------



## Stefan1200 (6. Jan 2004)

RubenZ hat gesagt.:
			
		

> Nur auf dem Rechner wo Jbuilder installiert ist, oder auch auf denen wo man die *.exe dann laufen lassen möchte?



Beides... (Jedenfalls bei JBuilder 8 war das so).


----------



## RubenZ (6. Jan 2004)

mariopetr hat gesagt.:
			
		

> RubenZ hat gesagt.:
> 
> 
> 
> ...



Habe mir excelsior jet mal angeschaut. Sieht gut aus. Danke für den Tip  :wink: 

Reflection, Swing, corba

Corba war irgendsowas wie verteilte Anwendungen - oder?

Und der Rest, wofür brauche ich den?


----------



## RubenZ (7. Jan 2004)

Habe ich etwas falsches gefragt?


Gruß

Rube


----------



## mariopetr (7. Jan 2004)

wieso? ich nehme mal an der rest wird dich nicht interessieren wenn du damit nichts anfangen kannst. eine erklaerung was was ist und wozu es im einzelnen benutzt wird wuerde zeit und raum sprengen.


----------



## RubenZ (7. Jan 2004)

mariopetr hat gesagt.:
			
		

> wieso? ich nehme mal an der rest wird dich nicht interessieren wenn du damit nichts anfangen kannst. eine erklaerung was was ist und wozu es im einzelnen benutzt wird wuerde zeit und raum sprengen.



Naja, keine schlechte Vermutung.  :wink: 

Aber, nur so ein Satz zu jedem Thema is doch drin - oder?

danke


----------

