Vortrag von Guy Steele

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
pillmuncher
User
Beiträge: 1485
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

In specifications, Murphy's Law supersedes Ohm's.
BlackJack

Die kleinen Sprünge im Video nerven ein wenig. :-(

Interessant ist, dass Steele 1998 neben „generic types” auch Operator-Überladung gerne in „der Java™ Programmiersprache” gesehen hätte. Ich auch! :-)
lunar

@BlackJack: Es fehlten dann nur noch ein Schuss Methodenreferenzen, und eine Prise Lambdas, und Java wäre sogar einigermaßen lecker :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben:@BlackJack: Es fehlten dann nur noch ein Schuss Methodenreferenzen, und eine Prise Lambdas, und Java wäre sogar einigermaßen lecker :)
So wie C# es schon bietet? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Dafür ist Java „plattformunabhängiger”. Unter Linux gibt es zwar Mono, aber ich habe das Gefühl das hier .NET nicht wirklich gut angenommen wird. Und wenn das System etwas exotischer wird, ARM wie beim Raspberry Pi mit Raspbian als Betriebssystem, dann funktioniert es erst einmal nicht bis da irgendwer die Probleme mit ARM + Hardware Gleitkommazahlen in Mono gefixt hat. Oracle bietet dafür zwar auch (noch) keinen JIT-Compiler aber es war wenigstens möglich Java-Programme laufen zu lassen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@BlackJack: Ja, klar. Nachdem ich in letzter Zeit C# kennen lerne, gefällt mir daran eben vieles, was ich bei Java vermisse. Ich fände es schön, wenn Java den Spieß nun mal umdreht und C# in einigen Dingen "kopiert" - zu Beginn nannte man C# ja den Java-Clone. Es wäre an der Zeit, wenn sich das mal umdrehte ;-) Denn ich fühle irgend wie, dass die Java-Welt mehr OS ist als die C# (bzw. .NET)-Welt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@BlackJack: Ich glaube, dass die Vorbehalte gegen Mono vor allem auf Vorbehalten beruhen, doch ungeachtet dessen wird Java unter Linux noch weniger angenommen. Es gibt mindestens zwei verbreitete Mono-Anwendungen, nämlich Banshee und Tomboy, aber kennst Du eine verbreitete Java-Anwendung? Ich nicht...

Mono unterstützt ARM nicht, die JVM unterstützt iOS nicht. Welche Umgebung "plattformunabhängiger" ist, hängt letztlich nur von den jeweiligen Anforderungen ab.

@Hyperion: Woran machst Du dieses "Gefühl" fest? Ich für meinen Teil glaube, dass Java und .NET sich in dieser Hinsicht wenig geben. Beide Plattformen haben große und engagierte Gemeinschaften, die freie Projekte entwickeln. Beide Plattformen haben eigene Hosting-Seiten für freie Software (Javaforge beziehungsweise Codeplex). Es gibt sicherlich Unterschiede, doch die gleichen sich letztlich aus. Java hat mit der Apache Foundation eine große Dachorganisation, die wichtige freie Java-Projekte beheimatet (i.e. Maven, Jakarta, usw.), dafür ist Microsoft selbst freie Software gegenüber aufgeschlossener als Oracle, und hat selbst diverse wichtige freie Projekte ins Leben gerufen (i.e. Wix, Nuget, F#, usw.)
BlackJack

@lunar: Eclipse wird auch unter Linux als IDE für alles mögliche verwendet. JDonwloader hat auch ein paar Nutzer. Ich persönlich nutze noch ein paar andere in Java implementierte Programme (zum Beispiel Freemind und TVBrowser) aber nur eines aus der .NET-Ecke. Und das auch nur weil Tomboy mit Ubuntu One synchronisiert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben: @Hyperion: Woran machst Du dieses "Gefühl" fest?
Tja, ich schrieb ja extra Gefühl - Codeplex lerne ich erst nach und nach kennen. Vielleicht ist mein Gefühl auch falsch ;-)
lunar hat geschrieben: Java hat mit der Apache Foundation eine große Dachorganisation, die wichtige freie Java-Projekte beheimatet (i.e. Maven, Jakarta, usw.), dafür ist Microsoft selbst freie Software gegenüber aufgeschlossener als Oracle, und hat selbst diverse wichtige freie Projekte ins Leben gerufen (i.e. Wix, Nuget, F#, usw.)
Ja, Oracle tut Java momentan noch nicht gut... hoffen wir mal, dass das nicht zu einer Angelegenheit a la Nokia und Qt verkommt. Ja, ich arbeite momentan mit WiX und lerne nach und nach kennen, dass Microsoft sich in den letzten Jahren schon ein wenig bewegt. Aber Du musst zugeben, dass die Apache Foundation eben stärker im OS Bewusstsein verankert ist, als es Microsoft aktuell (noch) ist ;-)

Nebenbei: Das ganze Windows Installer Konzept ist ja dermaßen ärmlich... selbst das gute alte RPM ohne Yum Aufsatz konnte ja mehr! Dank WiX wird es so langsam erträglicher, aber auch da muss noch viel getan werden.

Nuget kannte ich noch gar nicht, danke dafür! :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@Hyperion Ob Oracle gut oder schlecht für Java ist, weiß ich nicht. Sun war jedenfalls nicht besser, insbesondere nicht, als es der Firma noch gut ging. Zu freier Software hat Sun auch erst im Niedergang gefunden, und dann auch kaum aus Überzeugung, sondern eher aus wirtschaftlicher Not. Freie Software wird dennoch überleben, gerade bei Java, denn da sind wichtige Bestandteile der Toolchain wie Eclipse oder maven freie Software, von denen Oracle selbst sicherlich auch Gebrauch macht.

Windows Installer ist sicherlich nicht perfekt, hat nicht wenige Macken (*hust* Unicode *hust*), aber gleich das Konzept zu kritisieren, finde ich übertrieben. Windows Installer ist halt keine Paketverwaltung, und war nie als solche gedacht. Was stört Dich denn konkret daran?

@BlackJack Die von Dir genannten Programme laufen unter Linux, sind aber nicht explizit für Linux geschrieben. Ich finde, dass ist ein durchaus bedeutender Unterschied: Unter Linux installiert man Java, um Eclipse zu nutzen, aber nur selten, um in Java Programme für Linux zu schreiben. Mit Mono ist das anders, sowohl Banshee und Tomboy wurden explizit für Gnome geschrieben. Und Banshee hat sicherlich nicht wenig Nutzer, ist es doch unter Ubuntu der vorinstallierte Player.
BlackJack

@lunar: Dem würde ich widersprechen. Die meisten werden Mono gar nicht installieren sondern das eben auf der Platte haben weil der Standardmediaplayer das halt braucht. Und den werden sich die meisten nicht deswegen aussuchen weil er in Mono geschrieben ist, sondern weil er eben der Standardplayer ist. Der hätte auch in Haskell geschrieben sein können, ohne dass man daraus ableiten könnte das Haskell als Programmiersprache für Linux besser angenommen wird als Java.

Man könnte auch argumentieren, dass es mehr .NET-Programme speziell für Linux gibt, weil die Leute unter Linux Gtk# verwenden und damit schneller nahezu „Linux only” sind, als bei Java wo es eine plattformunabhängige(re) GUI-Bibliothek gibt. Ich weiss, man könnte Gtk# auch unter Windows installieren, aber vergleich mal den Aufwand Java unter Windows zu installieren mit Mono + Gtk# + Gtk dort zu installieren. Damit sind Gtk#-Anwendungen praktisch auf Linux beschränkt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

lunar hat geschrieben: Windows Installer ist sicherlich nicht perfekt, hat nicht wenige Macken (*hust* Unicode *hust*), aber gleich das Konzept zu kritisieren, finde ich übertrieben. Windows Installer ist halt keine Paketverwaltung, und war nie als solche gedacht. Was stört Dich denn konkret daran?
Letztlich genau das, das es *keine* Paketverwaltung ist. Irgend wie ist es ziemlich ätzend, sämtliche Abhängigkeiten mühsam per Hand zusammen zu schustern, nur weil die eigene Applikation sie braucht; oder noch "schlimmer", weil eine benutzte Komponente viele mitbringt. Da fehlt mir ein Gesamtkonzept, wie man es unter Linux gewöhnt ist.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@Hyperion Ich kann diese Probleme nicht nachvollziehen, Du darfst halt nicht versuchen, Abhängigkeiten separat zu installieren, sondern musst sie falls möglich immer mitliefern. Um welche Abhängigkeiten handelt es sich denn konkret? Schreibst Du eine .NET-Anwendung? Falls ja, dann verwende doch einfach NuGet, um Deinem Projekt alle benötigten Assemblies als Referenzen hinzuzufügen. MSBuild kopiert diese dann automatisch ins Build-Verzeichnis, und von da brauchst Du sie nur Deinem Wix-Projekt hinzuzufügen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@lunar: Es geht um die Installation und das Setup eines MS SQL Servers 2008 R2. Dieser benötigt neben .NET auch noch die PowerShell und Windows Installer 4.5. Da das ganze ab Windows XP aufwärts und offline installierbar sein soll, muss ich Pakete für alle diese Dinge in zig Varianten mitliefern und entsprechend für `burn` konfigurieren. Das ist ziemlich ätzend... aber vielleicht weißt Du dafür einen besseren Weg?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@Hyperion: Nein, es gibt keinen besseren Weg, wenn Du noch XP unterstützen musst. Wundert Dich das? Immerhin versuchst Du mal ebenso, zehn Jahre Entwicklung zu überbrücken. Nichts für ungut, aber sei doch froh, dass es überhaupt halbwegs geht. Unter Linux stündest Du im Regen beim Versuch, dasselbe Programm unverändert auf RHEL 4 und Fedora laufen zu lassen :)

Vielleicht erlauben Dir Deine Anforderungen ja, Windows Installer und Powershell außen vor zu lassen (beides wird seit Vista mitgeliefert), und für XP separat ein Skript zur Verfügung zu stellen, mit dem sich all diese Pakete nachinstallieren lassen. Oder Du gehst davon aus, dass es sich um halbwegs moderne XP-Systeme handelt, dann sollte zumindest Windows Installer 4 installiert sein.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@lunar: Naja, die Anforderungen kommen ja nicht von mir ;-) Ich würde das so sehen wie Du. Generell ist da einfach im Windows Umfeld das Problem der Gewohnheit der Benutzer: Diese erwarten eben, dass sie auf einen Installer klicken und das Programm bei ihnen läuf; dazu kommt eben noch, dass viele auf extrem alte OS setzen. Windows Server 2003 ist leider auch noch viel im Einsatz und gibt sich im Vergleich zu Win XP kaum etwas - selbst bei 2008 sieht es nicht viel anders aus in einigen Dingen. Auch da kann ich immer mit der (richtigen) Sichtweise kommen, dass man da per Online-Update immer auf dem neuesten Stand sein sollte - aber auch das ist eben nicht immer durchsetzbar. Und wenn man verkaufen will, dann ist eben der Kunde König...

Unter Linux hat man sicherlich teilweise auch Probleme, aber da ist das Bewusstsein eher ein anderes. Admins sind es da gewohnt, Anforderungen genau zu lesen und zu analysieren und Abhängigkeiten ggf. selber zu installieren. Ok, Admins unter Windows können da sicher auch - aber leider gibt es eben genug Firmen, die sich keinen echten Admin leisten, sondern nur einen IT-Beauftragten, der nicht viel mehr kann als der Standardanwender.

Ich muss leider *ein* Paket erstellen - "koste" es, was es wolle... aber es hat ja heute auch geklappt. Privat würde ich das sicher anders handhaben ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
lunar

@Hyperion: Musstest Du überhaupt selbst etwas installieren, oder einfach nur einen Haufen MSI-Pakete auf einem Zielsystem installieren? Dann hättest Du ja auch einfach ein kleines C#-Programm schreiben können, dass die MSI-Pakete per "msiexec" installiert, und dabei einen hübschen Fortschrittsbalken mit Fantasiewerten, anzeigt :) Tut mir leid, dass die Idee jetzt zu spät kommt, ist mir aber auch gerade erst eingefallen...
Antworten