News Oracle veröffentlicht Java 7

Loopo schrieb:
Für 32-Bit-Software brauchst du die 32-Bit-Laufzeitumgebung und für 64-Bit-Software brauchst du die 64-Bit-Laufzeitumgebung.


Solange wir von reinen Java-Programmen reden natürlich nicht, sonst wäre das ja nicht mehr plattformunabhängig.
 
ice-breaker schrieb:
Ich würde aber den Ergebnisen nicht zuviel relevanz zusprechen, solche primitven Operationen zu messen ist in Java einfach sau schwer, da wird alles viel zu schnell durch den GC, JIT oder sonstwas verfälscht.
Naja. Ganz so primitiv sind die Kernel-Tests ja nicht. Es sind schon realistische Anwendungen:

Fibonacci series
Tower of Hanoi
Sieve of Eratosthenes for finding prime numbers
2-D Fast Fourier Transform
NAS EP benchmark generating Gaussian random numbers
NAS IS benchmark for integer sorting

Aber du hast recht. Beide Sprachen sind für die Anwendungen für die man sie einsetzt schnell genug (meistens). In C# hilft manchmal noch das schreiben von unsicherem Code wenn es wirklich mal etwas zu langsam sein sollte, und ansonsten muss man halt eine C/C++ Bibliothek für die zeitkritischen Dinge schreiben oder das Programm komplett nativ schreiben. Java und .NET Sprachen sind halt nichts für wirklich zeitkritische Anwendungen.
Gott sei dank habe ich sehr sehr wenig Anwendungsfälle bei denen es auf hohe Performance ankommt und ich kann schön bei meinen gemanageten Sprachen bleiben. :)
 
Zuletzt bearbeitet:
Eisbrecher99 schrieb:
Vorher solltest du dir das hier mal reinziehen.


Der Trailer ist klasse.
.Net ist die grösste Seuche die jemals die Computerwelt heimgesucht hat. Java ist auch nicht perfekt, aber nennen wir es das kleinere Übel. Ich vermisse die gute alte Zeit als man noch ohne grossartige runtimes auskam und alles sauber in C Programmiert war.
Die neue Welt mag vorteile haben wie kleinere Programme und kompatibilität, aber wenn ich die Wahl habe zwischen modernem Multikulti und dem althergebrachten entscheide ich mich grundsätzlich immer gegen das moderne.
Ich hoffe nur die neue Version wird insgesamt etwas performanter sein als die vorgänger.
 
wazzup schrieb:
Ich vermisse die gute alte Zeit als man noch ohne grossartige runtimes auskam und alles sauber in C Programmiert war.
Auch bei C hast du Standardbibliotheken, diese können jedoch wenn gewünscht statisch in das Programm gelinkt werden. Wie man jedoch an den Updates für die Visual C++ Runtimes sieht, stecken auch in diesen Standardbibliotheken hin und wieder mal Sicherheitslücken, die bei statisch gelinkten Programmen nur durch eine neue Version des Programms gelöst werden können.
 
noxon schrieb:
Hehe. Das siehst du als Grund an? Nicht etwa die Lambda Expressions? Extension Methods? LINQ? Die Task Parallel Library? Typinferenz? Support für interne und externe Domainspezifische Sprachen (DSLs)? Die Reactive Extensions? XML Literals? Unsafe Code? Und in Zukunft so Dinge wie Async?
Das ist ja alles schön und gut, solange es für .net aber nicht Frameworks von der Qualität wie Spring, OSGi, Eclipse RCP, Guice, Hibernate etc. gibt, bleibt es für ernsthafte Enterprise-Anwendungen ganz einfach uninteressant.
 
Zuletzt bearbeitet:
wazzup schrieb:
Der Trailer ist klasse.
.Net ist die grösste Seuche die jemals die Computerwelt heimgesucht hat. Java ist auch nicht perfekt, aber nennen wir es das kleinere Übel. Ich vermisse die gute alte Zeit als man noch ohne grossartige runtimes auskam und alles sauber in C Programmiert war.
Die neue Welt mag vorteile haben wie kleinere Programme und kompatibilität, aber wenn ich die Wahl habe zwischen modernem Multikulti und dem althergebrachten entscheide ich mich grundsätzlich immer gegen das moderne.
Ich hoffe nur die neue Version wird insgesamt etwas performanter sein als die vorgänger.

Bei der Sichtweise merkt man, dass du wohl eher kein Programmierer bist? Managed Sprachen sind heute kaum mehr wegzudenken und werden nicht grundlos mehr benutzt als C/++ (von der lowlevel Programmierung auf Hardware und Treiber und dingen wie Medizin etc mal abgesehen).
Und das mit der Seuche musst du nochmal genauer erklären?

edit: ach ich sehe schon an deinem Benutzerlogo, dass du wohl kein Microsoft-Freund bist. Dann kannst du dir eine Antwort auf meine Frage sparen, etwas objektives käme eh nicht dabei rum.
 
Zuletzt bearbeitet:
chied schrieb:
Wow... Einmal mehr ein Grund, .NET zu verwenden und nicht dieses zurückgebliebende Kaffeetassenzeugs...

Du Programmierst eh nur "Hello World" ausgaben, da ist dann egal welche Sprache zu nimmst. Aber wenn du mal groß bist, wirst du verstehen was der Sinn (und Unsinn) von Java ist.
 
Leute, diese Language-wars führen doch zu überhaupt nix!
(Fast) jede Sprache hat ihre Existenz-Berechtigung; bei .Net ist es eben die tiefe Integration in Windows, die Dinge ermöglicht, welche mit einem platformunabhängigen Java nicht möglich sind
 
Also mein Minecraft zickt damit herum.
Musste zwecks 512*512er Texturen die 64Bit Version istallieren und habe dann gleich die 7ner genommen.
Minecraft stürzt etwas häufiger mit Java Fehlermeldungen ab. Außerdem bekomme ich den berühmten Whitebox Error nicht weg. Wenn ich es aus dem MC Patcher starte geht es, aber der normaler Verknüpfung fehlen die Texturen für Items.
Inwiefern das jetzt mit Minecraft, Java oder den Texturen zu tun hat, kann ich aber nicht sagen.
 
Java 7 hat Bugs, von daher würde ich aktuell davon abraten es zu nutzen, wenn man nicht manuell die flags zum Starter hinzufügt um die verbuggte Optimierung zu deaktivieren.
 
Java 7 sollte nicht installiert werden!
http://www.lucidimagination.com/blog/2011/07/28/dont-use-java-7-for-anything/
Schleifen können die VM zum Absturz bringen oder im schlimmsten Fall verfälschte Ergebnisse liefern.

chied schrieb:
"in Switch-Anweisungen den Datentyp String zu verwenden"
Das gab's vorher noch nicht?!
Und zwar aus gutem Grund. Ein Switch-Statement basierend auf Enums oder Zahlen kann vom Compiler einfach in Sprunganweisungen übersetzt werden - sehr schnell. Switch mit komplexen Dateitypen ergibt einen Haufen verschachtelter If-Else-Blöcke - sehr langsam. Um nicht den Eindruck zu erwecken, Switch mit Strings wäre eine gute Idee gab es das bisher nicht.
 
SheepShaver schrieb:
Das ist ja alles schön und gut, solange es für .net aber nicht Frameworks von der Qualität wie Spring, OSGi, Eclipse RCP, Guice, Hibernate etc. gibt, bleibt es für ernsthafte Enterprise-Anwendungen ganz einfach uninteressant.

Scheinbar kennst du dich in der .NET-Welt nicht richtig aus. Viele dieser Frameworks sind in .NET gar nicht nötig, weil funktional schon integriert.
In Sachen ORM gibt es außerdem auch sowas wie NHibernate. Ich bevorzuge aber lieber gleich das bereits integrierte Entity Framework.
 
riDDi schrieb:
Java 7 sollte nicht installiert werden!
http://www.lucidimagination.com/blog/2011/07/28/dont-use-java-7-for-anything/
Schleifen können die VM zum Absturz bringen oder im schlimmsten Fall verfälschte Ergebnisse liefern.
Ich stimme dem Autor zwar zu, er hätte aber wenigstens auch deutlicher hervorheben können, dass sich dieser Bug auch deaktivieren lässt:
Code:
-XX:-UseLoopPredicate
Denn es gibt auch gute Gründe wirklich Java7 zu verwenden, für einige Software-Produkte kann der neue Hotspot-Compiler und der neue G1-GarbageColletor nämlich wirklich deutliche Vorteile bringen.

riDDi schrieb:
Und zwar aus gutem Grund. Ein Switch-Statement basierend auf Enums oder Zahlen kann vom Compiler einfach in Sprunganweisungen übersetzt werden - sehr schnell. Switch mit komplexen Dateitypen ergibt einen Haufen verschachtelter If-Else-Blöcke - sehr langsam. Um nicht den Eindruck zu erwecken, Switch mit Strings wäre eine gute Idee gab es das bisher nicht.
nicht unbedingt, aus jedem Objekt in Java lassen sich Hashcodes berechnen, die man für die switch-Funktion nutzen könnte.
Ich denke mal man hat die Berechnung von Hashcodes für Strings deutlich optimiert, womit man die gleichen Optimierungen (Sprung-Befehl) wie bei Integern nutzen kann. Für die statischen Strings der cases kann dies ja bei Kompilierung oder beim Übersetzen passieren, wodurch nur noch der zu überprüfende String im Case gehasht werden muss.
 
Spezialist schrieb:
Scheinbar kennst du dich in der .NET-Welt nicht richtig aus. Viele dieser Frameworks sind in .NET gar nicht nötig, weil funktional schon integriert.
In Sachen ORM gibt es außerdem auch sowas wie NHibernate. Ich bevorzuge aber lieber gleich das bereits integrierte Entity Framework.
Also sorry, scheinbar kennst du nicht den Funktionsumfang der von mir erwähnten Frameworks. Nicht umsonst sind .net Projekte im Enterpriseumfeld eher exotisch.
 
SheepShaver schrieb:
Also sorry, scheinbar kennst du nicht den Funktionsumfang der von mir erwähnten Frameworks. Nicht umsonst sind .net Projekte im Enterpriseumfeld eher exotisch.
Also ich kann da aber was anderes berichten.
Ich musste letztens ein Programm schreiben, dass einen ringförmigen Barcode in einem 30 fps Kamerabild einliest. Dieser Ring konnte sich irgendwo auf dem Bild befinden und daher musste ich auf Dinge wie Farbfilter, Entstörungsfilter, Objekterkennung und andere Dinge zugreifen, wofür ich natürlich ein CV Framework genommen habe.

Mein erster Versuch war das Programm in Java zu schreiben, welches das OpenCV Framework verwendet. Das war das reinste Chaos sag ich dir. Da ist überhaupt nichts dokumentiert gewesen. Nichts hat funktioniert wie es sollte und die API war komplexer als sie es hätte meiner Meinung nach hätte sein müssen.

Nach langem hin und her habe ich dann mal nach einem .NET CV Framework gesucht und bin auf AForge.NET (rein managed in C#) gestoßen. Damit ging es dann innerhalb weniger Stunden. Ich musste mir nur ein paar der dutzenden Beispielprogramme ansehen und etwas abändern und die Basisfunktionalität war vorhanden.
Das was mit Java in einer Woche nicht möglich war ging mit .NET innerhalb von ein paar Stunden.

Interessant an den beiden Frameworks ist übrigens auch, dass die Performance von dem in C# geschriebenen Framework mit dem nativen C++ absolut mithalten kann. Die komplexe Bildverarbeitung funktioniert bei 30 fps anstandslos in C#. Aus Spaß hatte ich sogar mal diverse andere Features des Frameworks wie KI, Gestenerkennung und Motiondetection getestst und damit lief es immer noch bei 30 fps.

Also die Tatsache, dass .NET Frameworks immer schlechter sein sollen, als die Java Frameworks kann ich so nicht bestätigen.
 
Zuletzt bearbeitet:
ice-breaker schrieb:
Ich denke mal man hat die Berechnung von Hashcodes für Strings deutlich optimiert, womit man die gleichen Optimierungen (Sprung-Befehl) wie bei Integern nutzen kann.

Hashfunktionen sind nur in den seltesten Fällen eindeutig, und wenn, dann nur durch sehr zeitraubende Implementierungen. Daher ist dieser Ansatz nicht für einen inhaltlichen Vergleich geeignet.
Außerdem fällt dem aufmerksamen Leser natürlich sofort auf, dass der Hashcode eines Strings niemals eindeutig sein kann. (Vergleiche die maximale Länge eines Strings in Verbindung mit den möglichen Permutationen der Zeichen und die Anzahl maximal darstellbarer, einzigartiger Hashcodes (2^32))
 
Zuletzt bearbeitet:
noxon schrieb:
Also ich kann da aber was anderes berichten.
oh wow!
Weil eine externe Library von irgendeinem Entwickler, der das in seiner Freizeit entwickelt, nicht funktioniert, kann man auch Rückschlüsse auf das ganze Ökosystem ziehen.
Sorry, aber deine persönliche Erfahrung ist in diesem Kontext doch absolut sch*** egal. Das gleiche kann mit der nächsten Library auch mit dem umgedrehten Ergebnis passieren, nicht jede Library in jeder Sprache ist genial


Killkrog schrieb:
Hashfunktionen sind nur in den seltesten Fällen eindeutig, und wenn, dann nur durch sehr zeitraubende Implementierungen. Daher ist dieser Ansatz nicht für einen inhaltlichen Vergleich geeignet.
Es reicht aber zum Eingrenzen der Kandidaten. Statt 50 Strings zu vergleichen reicht es dann einen Hash zu berechnen, an die Stelle der If-Kette zu springen, bei denen diese Strings stehen und dann nur noch diese paar übrigen zu vergleichen.
 
Zuletzt bearbeitet:
carom schrieb:
Bei der Sichtweise merkt man, dass du wohl eher kein Programmierer bist? Managed Sprachen sind heute kaum mehr wegzudenken und werden nicht grundlos mehr benutzt als C/++ (von der lowlevel Programmierung auf Hardware und Treiber und dingen wie Medizin etc mal abgesehen).
Und das mit der Seuche musst du nochmal genauer erklären?


Ich habe mal programmiert, wenn auch nicht auf Weltklasseniveau. Früher in Basic und später dann ne Zeit lang in Delphi. Dazu ein bischen HTML und ein paar Scripte vor der Web 2.0 Welle.
Damals war alles in der Programmierung relativ einfach und logisch, heute ist alles abstrakt und nicht mehr nachvollziehbar, zumindest für mich nicht.
Aber abgesehen davon das ich kein Vollblutprogrammierer bin, meine Abneigung gegen .net kommt eher daher das es den Rechner zumüllt, alles unnötig aufbläht und erschreckend langsam ist. Heute in den Zeiten wo 3Ghz + und 4 Kerne zum Alltag gehören merkt man es vielleicht nicht mehr so stark wie vor ein paar Jahren als .net auf den Markt kam. Es war eben ein typisches MS Produkt: unausgereift, langsam, überflüssig. Genau wie alles andere was MS so auf den Markt gedrückt hat oder drücken wollte, egal ob der überladene Mediaplayer inkl. der unnützen WMV/WMA Formate inkl. DRM oder auch die Zunes die keiner haben wollte.
 

Ähnliche Themen

Zurück
Oben