Training - Beratung - Projektarbeiten

www.David-Tielke.de

Ist der .NET-Entwickler der neue VB6-Entwickler?

Etwas mehr als 12 Stunden sind seit der BUILD vergangen… Die Konferenz die endlich Klarheit bringen sollte, die uns Entwicklern die Marschrichtung für die Zukunft aufzeigen sollte. Das Gefühl war schon irgendwie beängstigend am Vormittag, die Nervosität bei vielen Leuten spürbar. Durch die Verschwiegenheit von Microsoft im Vorfeld wurden die wildesten Gerüchte gestreut: Wird HTML5&JS die neue primäre Sprache für Windowsentwicklung? Wird es .NET weiterhin in seiner jetzigen Form geben? Haben wir viele Jahre eine Technologie gelernt, die nun veraltet ist?

Die Keynote begann, Windows 8 wurde gezeigt und dann war es raus: Es wird eine neue Laufzeitumgebung geben, genannt Windows RT, welche für die Entwicklung von Windows 8 Apps genutzt wird. Diese Runtime kann mit diversen Sprachen genutzt werden, neben HTML/JS und C++ glücklicherweise auch C#… Das HTML gesetzt war, vermuteten viele bereits, aber eine wirkliche Bekenntnis zu C# und zu .NET gab Microsoft bis dato nicht. Aber ist jetzt alles gut für das .NET Framework? Nein – ich denke nicht!

Wirklich viele Informationen über die nächste .NET Version gab es ja nicht. Bei der Sessionlist der BUILD ist mir folgende Session aufgefallen, auf die ich meine Argumentation stütze:

image

Das .NET-Framework wird also neue Erweiterungen bekommen, um Anwendungen für Windows 8 zu schreiben, bzw. die Windows RT aus .NET heraus nutzen zu können. Das man neue Erweiterungen für ein Betriebssystem bereitstellt, kennen wir bereits von Windows 7. Allerdings wurde das damals als “Windows 7 API Code Pack” bereitgestellt und nicht als Bestandteil einer neuen Version von .NET zu Verfügung gestellt.

Das Konzept von Microsoft war es (einmal!?), ein Framework für alle Windowsplattformen zur Verfügung zu stellen. Damit war sichergestellt, das Anwendungen, die auf einer Frameworkversion auf Betriebssystem X laufen, auch auf einem Betriebssystem Y läuft, vorausgesetzt es existiert eine Runtime dazu. Sollte Microsoft also wirklich die API für Windows 8 in .NET integrieren, wäre diese Plattformunabhängigkeit Geschichte. Macht man sich da das eigene Konzept kaputt?

Schaut man sich die Sessions zur BUILD an, wird eines deutlich: Der Kernpunkt dieser Konferenz ist neben Windows 8 vor allem HTML5 und JavaScript.

  • 9 Sessions zu .NET
  • 7 Sessions zu ASP.NET
  • 7 Sessions zu C#
  • 40 (!!!) Sessions zu HTML5

Merkwürdig das HTML5 als Technologie die langjährig gefeierte Technologie .NET mit einer gigantischen Entwicklergemeinde zu überholen scheint. Schaut man sich die Sessions im Bereich .NET, ASP.NET und C# an, mangelt es an wirklichen Innovationen und es erweckt den Eindruck, das diese Frameworkversion einzig und allein für die Kompatibilität mit Windows 8 entwickelt wurde und um die Brücke für ASP.NET Entwickler hin zu HTML5 Metro UI zu schlagen.

Wir sind bald im zehnten Jahr des .NET-Zeitalters angekommen. In dieser Zeit hat sich viel Verändert, das Framework wurde massiv erweitert und um coole und innovative Features ergänzt, wie z.B. LINQ. Wir haben mit WPF eine UI-Technologie die in der Lage ist, hardwarebeschleunigte Oberflächen zu entwickeln die schick und modern aussehen. Nun hat Microsoft mit Windows 8 ihr Flaggschiff zurück auf 0 gestellt (mehr oder weniger), und so viele Bereiche neu entwickelt wie bei keinem Betriebssystem vorher. Aber womit wurden die Oberfläche von Windows entwickelt? Mit HTML5 und JavaScript! Wurde das Betriebssystem auf Basis von managed Code geschrieben? Nein, aber warum? Das Forschungsbetriebssytem Singularity von Microsoft Research hat doch gezeigt, das ein performantes managed OS möglich ist und zahlreiche Vorteile hat. Welche großen Microsoftprodukte gibt es den, die mit .NET umgesetzt wurden, wenn wir Sharepoint einmal außen vor lassen? Keins!

Diese Tatsache zeigt mir, das Microsoft selbst nicht mehr an eine Zukunft von .NET glaubt und diese Version 4.5 des Frameworks untermauert das Ganze noch einmal. Egal mit wem man im Vorfeld gesprochen hat und über ein mögliches AUS von .NET diskutierte, jeder entgegnete mit der selben Antwort “Microsoft wird doch keine Technologie sterben lassen, in die sie so viele Jahre so viel Geld investiert haben”. Aber haben die VB6 Entwickler das nicht früher vielleicht auch behauptet bevor .NET veröffentlicht wurde? Ich befürchte die .NET Entwickler werden die neuen VB6 Entwickler…

Their strategy with Phone 7 has shifted?

Recht verwundert war ich dieser Tage über eine Email in meinem Posteingang. Golo Rodenwollte vorab zur BUILD seine Prognose zur Zukunft der Microsofttechnologien bekannt geben, welche ja bekanntlich dort die Stoßrichtung für die kommenden Jahre bekommen soll, um später wirklich sagen zu können “Ich habs euch ja gesagt…”

Da man sich recht regelmäßig über dieses Thema in der letzten Zeit mit vielen Leuten ausgetauscht hatte, war nicht viel neues zu lesen, erst recht nicht der Punkt “Windows 7 wird zugunsten von Windows 8 nicht weiterentwickelt”. "Der Punkt ist ja sowas von klar”, war meine Antwort. Erst bei der Antwort bemerkte ich, dass dort Windows PHONE 7 stand! Das neu entwickelte und gehypte Smarthonebetriebssystem Phone 7 schon nach so kurzer Zeit einstampfen für ein ehemaliges Desktopbetriebssystem? So ein Blödsinn…

War das wirklich so abwegig? Dieser Gedanke verfolgte mich den ganzen Tag weiter. Wie könnte Microsofts Ausrichtung der nächsten Jahre aussehen? Würde man wirklich so einen Super-GAU heraufbeschwören und allen Phone7-Kritikern recht geben?

Gehen wir mal zurück in den Oktober 2010. Microsoft veröffentlichte ein halbfertiges Handybetriebssystem und verärgerte sehr viele Kunden mit einer halbfertigen Software die selbst eingefleischten Microsoft-Fans die Tränen in die Augen trieb. Jeder fragte sich warum ein Produkt derart spät und unfertig auf den Markt gebracht wurde. Man muss ein Phone 7 Device nicht lange in der Hand halten, um den Eindruck zu bekommen, dass es bei Meilenstein X einfach rausgehauen wurde. Die Frage an der Stelle ist nur, was war der Grund für den Meilenstein? War es wirklich weil Microsoft unbedingt auf den Markt wollte oder evtl. ein weitreichender Technologiewechsel?

Zeitgleich wurde die Professional Developers Conference, kurz PDC, veranstaltet. Als jeder die üblichen Themen Silverlight, .NET, Azure & Co. vermutete, stand plötzlich etwas auf dem Plan, womit kaum jemand auf einer Microsoftkonferenz gerechnet hätte: HTML 5. Egal welche Session man schaute (sogar die Keynote), HTML5 war allgegenwärtig. Seitdem wird Silverlight für Web / Desktop nach Meinung vieler langsam sterben gelassen. Das missglückte Statement “our strategy with silverlight has shifted” von Bob Muglia trug sein übriges dazu.

Mitte des Jahres wurde Windows 8 angekündigt. Schon vor diesem Termin gab Microsoft bekannt, dass Windows 8 zukünftig auch auf ARM-Plattformen laufen würde. Damit strebt Microsoft das Ziel an, Windows 8 auf gängigen Tabletsystem lauffähig zu machen – super. Nebenbei wurde bekannt, dass das gesamte Betriebssystem derart modular aufgebaut sein soll, dass es in der Minimalinstallation auch auf Kleinstsystemen laufen soll  - Oha, was ist Microsofts Definition von Kleinstsystem? Okay, Windows 8 als Basis auf allen Geräten und die Plattform wird .NET, dachten viele… Aber das .NET-Framework wurde mit keinem Wort erwähnt… Stattdessen wieder nur HTML 5 als primäre Technologie.

Aber ist HTML 5 wirklich die neue Kerntechnologie? Nun ja, im Jahr 2010 war Microsofts Motto “Three screens and a cloud”. Jemand sagte mal zu mir “Wenn Microsoft nicht unter Druck versuchen wird, Azure durchzudrücken, will es niemand haben”. Der Technologiewechsel macht vor dem Hintergrund durchaus sinn, würde man eine breite Masse an Geräten nur mit “dummen” HTML5-Oberflächen ausstatten, wäre es naheliegend die Logik auf Server auszulagern und damit natürlich auch in die Cloud.

Zusätzlich möchte Microsoft in Windows 8 einen Marketplace für Desktopanwendungen einführen. Anders als bei der Einführung des Marketplace für Phone 7 hätte man hier nicht mit dem gigantischen Vorsprung von Apple und Android zu kämpfen (der übrigens bis heute nicht mal ansatzweise aufgeholt wurde), denn “Apps” für Windows 8 werden direkt nach der Veröffentlichung durch die Abwärtskompatibilität massenhaft zur Verfügung stehen.

Angenommen das alles würde eintreffen, was hat das mit Phone 7 zu tun? Naja, welchen Sinn hätte ein unausgereiftes MobileOS wie Phone 7 mit Silverlight als “Programmierplattform”, welches nach wie vor kein wirklich attraktives App-Angebot im Marketplace hat, wenn auf der anderen Seite ein seit Jahren bewährtes Desktopbetriebssystem bereit steht, was durch Anpassung nun auch auf “Kleinstgeräten”, also Smartphones laufen würde und deren Marketplace in kurzer Zeit etabliert sein wird?

Deshalb stelle ich mal die gewagte Theorie auf (natürlich durch die angesprochene Mail von Golo Roden): Microsoft wird Windows 8 auf ALLEN Plattformen bringen, das heißt auch auf Smartphones. Deshalb wird die Entwicklung von Phone 7 nicht mehr weitergeführt. Die neue primäre Entwicklungstechnologie auf dem “Screen” wird HTML5 + JScript. Dazu wird Microsoft eine neue Backendtechnologie auf Azure-Basis zur Verfügung stellen, die mit HTML5 + JScript effektiv genutzt werden kann. Nachdem Microsoft vor einem halben Jahr bekannt gegeben hat, Node.js auf Windows zu portieren, liegt die Vermutung nahe, das es etwas in diese Richtung geben wird.

In einem Jahr ein Smartphone mit Windows 8 in den Händen zu halten wäre klasse – darauf freue ich mich. Aber wo bei diesen Prognosen taucht .NET auf? Hat sich Microsofts Strategie damit auch geändert?

.NET DevCon 2011 in Nürnberg

image

Vom 6.-7. Juni war ich als Referent auf der .NET DevCon in Nürnberg zu Gast. Die .NET DevCon, welche von dem Verlag der dotnetpro veranstaltet wird,  fand zum ersten Mal statt und hat sich zur Aufgabe gemacht, aktuell verwendete Technologien zu vermitteln und weniger auf Zukunftsperspektiven ausgelegt zu sein. Im Development- und VisualStudio-Track war ich dabei mit drei Vorträgen vertreten.

C# 2.0
Immer wieder trifft man auf Entwickler die zwar sehr gut entwickeln können, aber meist viele der Spracherweiterungen aus C# 2.0 noch nicht richtig beherrschen und daher manche Aufgaben unnötig kompliziert lösen und dabei viel Zeit sparen könnten. In dieser Session ging es um die wichtigsten Neuerungen Generics, Nullable Value Types, Anonyme Methoden und Iteratoren.

LINQ it all together!
Eine der wohl faszinierendsten Technologien ist LINQ. Um diese Technologie zu ermöglichen, wurde die Sprache C# in der Version 3.0 abermals um einige Sprachkonstrukte erweitert. Welches diese Sprachkonstrukte sind, wie und wo sie eingesetzt werden und wie LINQtoObjects unter der Haube funktioniert, war Bestandteil dieser Session.

Debugging 2.0
Jeder Entwickler beherrscht den Debugger – sagen Sie. Natürlich, der Debugger in Visual Studio ist so intuitiv bedienbar, dass jeder Entwickler mit wenig Einarbeitungszeit schnell produktiv nach Fehlern suchen kann. Aber wissen Sie wie man entfernte Programme debuggt? Oder wie man auch Quellcode aus dem .NET-Framework beim debuggen berücksichtigen kann? Oder wie man herausfindet, was passiert ist, bevor das Programm angehalten wurde? In dieser Session ging es neben den normalen Features des Debuggers besonders um die Tricks und Kniffe und die neue Technologie IntelliTrace aus Visual Studio 2010 Ultimate.

Meine Sessions waren dabei alle sehr gut Besucht und das Teilnehmerfeedback war ausgezeichnet. Ich möchte mich an dieser Stelle noch einmal bei allen Teilnehmern und natürlich auch bei dem Veranstalter bedanken und hoffe auf ein Wiedersehen bei der nächsten .NET DevCon.