# Standalone Exe



## eliteSchaf (16. Jan 2006)

Hallo erstmal!
Bin seit ca 2 Jahren mit C# beschäftigt und habe mir gedacht, dass es nicht schlecht ist, wenn ich mich n wenig mit anderen Sprachen beschäftige. Nun zu meiner eigentlichen Frage.
Braucht man in Java auch so etwas wie .NET Framework oder werden immer Stand-Alone Dateien erzeugt?

Dexter


----------



## Xandro (16. Jan 2006)

Also um in Java zu programmieren benötigst Du das Java Development Kit (JDK),
dass Dir die Java Virtual Machine (JVM) und alle nötigen Elemente (Klassen, Pakete, etc.) mitliefert.
Diese sind grundlegend und darauf kannst Du 'leider' nicht verzichten...
Genau wie beim .NET Framework muss man die Java Runtime Environment (JRE) auf dem Zielrechner installiert haben,
um ein Java-Programm zum Laufen zu bringen.

Hoffe, dass hat Dir geholfen.


----------



## Bleiglanz (16. Jan 2006)

ja, du brauchst auch eine Laufzeitumgebung

es ist (fast) das gleiche in grün (Compiler erzeugt Bytecode der von einer JVM ausgeführt wird)

MSIL = Java-ByteCode

C# = Die Programmiersprache Java

cs.exe (der C# Compiler) = javac

eine .exe starten = java <Klassenname>

.NET Runtime = JRE

.NET Library = die Java Klassenbibliothek

Assembly = jar-Datei

usw. usf.

Ein Unterschied ist, dass die "virtuelle Maschine", die solchen ByteCode ausführen kann für Java für verschiedene Architekturen verfügbar ist (Mac, Solaris, Linux, Windows)


----------



## MPW (16. Jan 2006)

Man koennte es vllt. mal so formulieren: 

C# ist ein fake von Java, den Microsoft gemacht hat.

Java hat den Vorteil, dass es auch unter Linux und Apple und sonst noch exotischen Plattformen laeft, C# hat den Vorteil, dass es besser mit nativen Windowsprogrammen und dll-LIbraries kommunizieren kann. Dies geht zwar in Java auch, ist aber etwas komplizierter.


----------



## thE_29 (17. Jan 2006)

C# ist kein Nachmachung 

C# ist eine verbesserte C++ und VB Version!

Man kann leicht auf WinApi Dinger zugreifen hat die Syntax von C++ und auch Vorteile von java (was aber Neuerungen in C++ auch haben).

Wenns Operator überladen und friends Deklarationen von C++ auch noch hat, ist die Sprache eh super!!

Nur Plattformunabhängig ist ja halt net.. Außer jemand portiert das .NET Framework/Runtime in anderen OS..


----------



## Guest (19. Jan 2006)

Da haette ich auch nochma ne Frage zu: In C# kann man naemlich Programme nativ kompilieren... ist das in Java auch moeglich? Weil diese haessliche JVM ist ja echt fett und lahm...

BTW: Es gibt Mono, noch nicht viel mit beschaeftigt, aber damit sollten .NEt Programme unter Linux laufen. Also das ist das .Net Framework fuer Linux.


----------



## The_S (19. Jan 2006)

Naja, so lahm isses auch wieder net ???:L .

Du kannst exe-Dateien erzeugen, bin jetzt aber zu faul die die ganzen Nachteile aufzuzählen, such mal im Forum, da gibts genug Beispiele zu .


----------



## bygones (19. Jan 2006)

auch die umwandlung in eine exe verhindert nicht, dass man die jvm braucht

@gast:
nein man kann nicht, die JMV ist im Grunde nur groß, nicht lahm... wenn es dir nicht passt nehm ne andere Sprache !


----------



## Bleiglanz (19. Jan 2006)

@gast


> BTW: Es gibt Mono, noch nicht viel mit beschaeftigt, aber damit sollten .NEt Programme unter Linux laufen. Also das ist das .Net Framework fuer Linux.



Nein, das ist ein 95-98 % .NET für Linux, und erzeugt wahrscheinlich ganz neue Probleme


----------



## Guest (19. Jan 2006)

Es geht ja garnicht darum ob man JVM braucht oder nicht braucht, nur ein JIT Compiler(heisst der so in Java?) ist nun mal von Natur her um einiges langsammer als ein natives Programm, ob das nun noch irgendwelche Dependencies zu der JVM oder aehnliches hat ist ja nen ganz anderer Schnack es geht nur darum, dass man eine nativ compilierte Executable hat und keinen Byte-Code...


----------



## Bleiglanz (19. Jan 2006)

reine Legenden, was heisst "etwas langsamer"? Spürbar??

je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.

google nach "Excelsior JET" wenn du native exes haben willst, oder versuchs mit dem GNU Compiler

aber auch dass ist nicht wirklich total 100% native, das geht bei Sprachen wie Java, die unbekannte Module aus dem Internet nachladen können überhaupt nicht...


----------



## thE_29 (19. Jan 2006)

Ausserdem gibts ja für WIN auch einen Java to C++ Converter...

Wennst schon unbedingt ne exe haben willst ^^


----------



## MPW (19. Jan 2006)

deathbyaclown hat gesagt.:
			
		

> auch die umwandlung in eine exe verhindert nicht, dass man die jvm braucht



Doch, es gibt einen Compiler der das kann, allerdings ist das eine andere Sourcecodeimplementierung und die kann kein swing und awt, nur swt, ist daher auch muell.(GNU siehe unten)




			
				Bleiglanz hat gesagt.:
			
		

> reine Legenden, was heisst "etwas langsamer"? Spürbar??



Jep, siehe Java3D, man sagt zwar das das fuer Java recht schnell sein soll, kannst aber in die Tonne kloppen, ein schnelles ActionSpiel ist mit heutiger Rechnerperformence undenkbar.



			
				Bleiglanz hat gesagt.:
			
		

> je nachdem was man will kann man sich auch Benchmarks bauen, bei denen Java schneller als C/C++ ist, kein Problem.



Hm, gib mal ein Beispiel, das interessiert mich jetzt wirklich mal...




			
				Bleiglanz hat gesagt.:
			
		

> google nach "Excelsior JET" wenn du native exes haben willst, oder versuchs mit dem GNU Compiler



Wer glaubt das sei schnell, der irrt, JET ist langsamer als die JVM. GNU finde ich muell, da der - wie oben genannt - nicht mit Swing und AWT arbeiten kann.


----------



## MPW (19. Jan 2006)

Verdammt, hab ich doch noch was vergessen, sry doppelpost;-)




			
				thE_29 hat gesagt.:
			
		

> Ausserdem gibts ja für WIN auch einen Java to C++ Converter...
> 
> Wennst schon unbedingt ne exe haben willst ^^



Wen meinst du da, GNU oder gibt es da einen anderen, poste mal bitte den Link, interessiert mich....
Findet die Transformation auf Compilations oder Sourceebene statt, letzteres wuerde es ja wirklich performant machen, aber geht voellig am Ziel vorbei, da man ja - wenn man es koennte - auch direkt C++ schreiben koennte.


----------



## Beni (19. Jan 2006)

MPW hat gesagt.:
			
		

> Bleiglanz hat gesagt.:
> 
> 
> 
> ...


Schon, aber es geht hier nicht um ein Framework, sondern um die VM selbst. Das Potential für ein 3D-Shooter hätte Java schon, nur müsste man dafür mal eine eigene, spezialisierte Engine (was ja genau das Gegenteil von Java3D wäre) schreiben. Aber da fehlt es heutzutage an Experten und an Geld.



			
				MPW hat gesagt.:
			
		

> Bleiglanz hat gesagt.:
> 
> 
> 
> ...


Z.b. hier. Wie vertrauenswürde die Seite ist, kann ich nicht sagen.

Edit: achja, zum JIT-Compiler...
Ein JIT-Compiler generiert naturgemäss schnelleren Code als ein normaler Compiler. Schliesslich haben sie einfach mehr Informationen über das Programm, das OS, die Hardware... kannst du hier nachlesen.


----------



## MPW (19. Jan 2006)

Beni hat gesagt.:
			
		

> MPW hat gesagt.:
> 
> 
> 
> ...



Naja, die ClientJVM ist aber schon ziemlich schlecht weggekommen, nur die ServerJVM scheint recht schnell zu sein. Naja ist allgemein veraltet, da es ja schon laengst 1.5 gibt. Aber ich hab das auch schonmal gehoert, dass Java schneller als C++ sein soll, habe nur noch nicht so ganz kapiert, was genau man dafuer tun muss;-)


----------



## Beni (19. Jan 2006)

Eigentlich nich viel MPV: gute Algorithmen anwenden, Buffered-Streams verwenden, nicht an jeder Ecke neue Objekte anlegen (Speicher muss alloziert werden, der GC muss später aufräumen...), keine Speicherlecks programmieren (sonst wird herumgeswapt), die Geschwindigkeit von GUIs mit Multithreading subjektiv erhöhen (der User meint es sei schneller, in Wirklichkeit verliert man ein bisschen Performace durch den Overhead der verschiedenen Threads).

Also nichts, was nicht selbstverständlich sein sollte :wink:


----------



## meez (20. Jan 2006)

btw. Gab es nicht mal ein Opensource Prog, welches ein .exe erzeugt, dass sich selber den Pfad zu einer geeigneten VM auf der Maschine sucht, und dann meinen Hack started?
Wie hiess das nochmal  ???:L 
(Ja ich weiss es gibt eine Suchfunktion, aber ich bin zu faul dazu)


----------



## MPW (20. Jan 2006)

Beni hat gesagt.:
			
		

> Eigentlich nich viel MPV: gute Algorithmen anwenden, Buffered-Streams verwenden, nicht an jeder Ecke neue Objekte anlegen (Speicher muss alloziert werden, der GC muss später aufräumen...), keine Speicherlecks programmieren (sonst wird herumgeswapt), die Geschwindigkeit von GUIs mit Multithreading subjektiv erhöhen (der User meint es sei schneller, in Wirklichkeit verliert man ein bisschen Performace durch den Overhead der verschiedenen Threads).
> 
> Also nichts, was nicht selbstverständlich sein sollte :wink:



_heisse uebrigens MPW mit W nicht mit V_

Hm, wie du aber in dem anderen Link sehen kannst, hilft uns das nicht viel, da die JVM doch recht schlecht weggekommen ist(zumindest die ClientJVM)

@meez, gegen Faulheit koennen wir nix machen, tut mir Leid;-)


----------



## Beni (20. Jan 2006)

Sorry mit dem Namen.

Was hindert dich (oder sonstjemand) denn dran, einfach auf die ServerVM umzuschalten *g*. Wenn man mit einem Auto einen neuen Geschwindgkeitrekord fahren will, schaltet man ja auch irgendwann in den zweiten Gang :wink:


----------



## MPW (21. Jan 2006)

Ja schon, aber du kannst froh sein, wenn der normaler Endanwender ueberhaupt eine JVM hat....


----------



## sliwalker (21. Jan 2006)

thE_29 hat gesagt.:
			
		

> C# ist kein Nachmachung
> 
> C# ist eine verbesserte C++ und VB Version!
> 
> Man kann leicht auf WinApi Dinger zugreifen hat die Syntax von C++ und auch Vorteile von java (was aber Neuerungen in C++ auch haben).



Ich weiß nicht wo Du zwischen C++, VB und C# den Zusammenhang siehst.  :?: 
Wenn Du möchtest kannst Du mal den Artikel hier lesen. 

C# - Java wannabe? (auf englisch)

greetz
SLi


----------



## meez (24. Jan 2006)

MPW hat gesagt.:
			
		

> @meez, gegen Faulheit koennen wir nix machen, tut mir Leid;-)



Pahhh...Habs mittlerweile auch selber gefunden  :bae: 

http://jsmooth.sourceforge.net


----------



## Roar (24. Jan 2006)

MPW hat gesagt.:
			
		

> Ja schon, aber du kannst froh sein, wenn der normaler Endanwender ueberhaupt eine JVM hat....


programme, die für otto normalverbraucher geschrieben werden, werden wohl kaum in bedrängnis kommen was die geschwindigkeit betrifft, anders als bei programmen die das wetter für die nächsten 100 jahre berechnen soll oder so 

@meez: von den dingern gibs ne ganze menge, schau auch mal in die faq dazu :bae:


----------



## thE_29 (24. Jan 2006)

@sliwalker: uuuu weil jemand einen Artikel verfasst 


Java ein C wannabe?? (wie wärs damit?)



Meine Aussage hat sich auf die Syntax (C++) und die allg. leichtere Handhabbarkeit zur WinApi (das hat VB) in C# zu dieser Aussage bewegt!

So!


----------



## meez (24. Jan 2006)

Roar hat gesagt.:
			
		

> @meez: von den dingern gibs ne ganze menge, schau auch mal in die faq dazu :bae:



Naja...So riesig ist die FAQ auch wieder nicht :bae:  ... die führt einfach noch exe4j auf, 
dessen Erfinder aber Bares sehen wollen..


----------



## thE_29 (24. Jan 2006)

Also ich habe mir ein Programm geschrieben (dirstat ungefähr so wie kdirstat nur ohne grafische Oberfläche)

So, wenn ich die vom JBuilder aus in eine exe, linux nativ, mac os nativ uwmandeln lasse, so crashed die exe zeitweis wenn ich den kompletten PC durchsuchen lasse!! (mit der Meldung divid to zero oder sowas)

Führe ich die jar Datei aus, so passiert kein fehler!!

Deswegen würde ich nie zu einer exe raten...


----------



## MPW (24. Jan 2006)

Roar hat gesagt.:
			
		

> MPW hat gesagt.:
> 
> 
> 
> ...



Hm, also 3D-Spiele sind eigentlich fuer den (nocht nicht)-Ottonormalerverbraucher, wenn du verstehst was ich meine;-)


----------

