Windows Phone 7 am Ende?

Gestern ist die Bombe beim Windows Phone Summit geplatzt: Unsere Windows Phone Geräte der ersten und zweiten Generation werden kein Update auf Windows Phone 8 bekommen.

Das hört sich im ersten Moment schlimm an, ist es aber nicht wirklich, denn wir bekommen ein Update auf Windows Phone 7.8. Alle aktuellen Geräte werden also auf WP 7.8 aktualisiert werden und es kommt ab Zeitpunkt X neue Hardware mit WP8 auf den Markt.

In diesem Artikel möchte ich diese Entscheidung ein wenig beleuchten.

Die auffälligste Änderung bei Windows Phone 8 (ich nenne es im folgenden einfach mal WP8) ist, daß es einen neuen Kernel gibt, der auf dem Windows 8 Kernel basiert. WP7 basierte dabei auf dem Windows CE Kernel, der auch früher unter Windows Mobile eingesetzt wurde. Der Unterschied für den Kunden? Erstmal keiner, denn ein Kernel ist der technische Unterbau eines Rechners. Ein anderer Kernel ändert erstmal nichts. Das Gerät funktioniert weiterhin wie bisher.

Sicherlich wurden mit diesem Kernel einige Neuerungen eingeführt. Die augenscheinlichste ist: Mehrkernprozessoren werden unterstützt. Das ist eine Sache, die vom Kernel unterstützt werden muss. Das ist auch eine tolle Sache und war zwingend notwendig, aber genau dies ist für keinen WP7 Nutzer etwas, daß einen Bedarf für diesen Kernel auf WP7-Hardware rechtfertigen würde. Der Prozessor im Phone ist nicht austauschbar und Single-Core-Prozessoren werden vom WP7-Kernel ja bereits wunderbar unterstützt.

Kommen wir zum neuen Treibermodell. Der WP8-Kernel führt ein neues Treibermodell ein, welches ähnlich dem von Windows 8 aufgebaut ist. Ok, diese beiden Sätze sind pure Spekulation, aber die Wahrscheinlichkeit das es so ist, liegt bei nahezu 100%. Diese neuen Treiber unterstützen Dinge wie höher auflösende Displays (1280×720 beispielsweise), NFC (Near Field Communication für Datenaustausch und Bezahlvorgänge), Steckplätze für Micro-SD-Karten und sicherlich noch einiges mehr. Aber was haben diese Features alle gemeinsam? Richtig: Sie werden von den aktuellen WP7-Geräten allesamt nicht unterstützt, weil diese einfach die technischen Voraussetzungen nicht haben. Auch dies macht ein Update von WP7 auf WP8 in einer WP7-Hardware nicht notwendig.

Kommen wir zu zwei weiteren sehr wichtigen Punkten: Der neue Startscreen, sowie die flexiblere Individualisierung durch den Nutzer. Sehr schöne Punkte, die die Metro-Oberfläche optimieren und auf den neuesten Stand bringen. Mir persönlich gefällt der neue Startscreen sehr gut und ich finde dies einen guten Schritt, der sicherlich die Produktivität und Übersichtlichkeit weiter steigern wird. Auch neue Kachelfarben habe ich mir schon lange gewünscht. Und genau hier setzt Microsoft an: Alle diese „weichen“ Änderungen, die nur in Software umgesetzt wurden, werden von WP7.8 unterstützt werden. Ein WP7.8 wird also so aussehen wie ein WP8 und das Look’n’Feel ist ja erstmal das wichtigste, oder?

Wenn ich diesen Artikel an dieser Stelle beenden könnte, dann wären sicherlich alle glücklich, aber leider ist dies nicht möglich. Es gibt noch einen weiteren Punkt, den Microsoft auf dem gestrigen Summit angekündigt hat. Auf WP8 werden native Programme ermöglicht. Das ist ebenfalls eine coole Neuigkeit, aber leider auch einer der Punkte, die es auf dem WP7 nicht geben wird, auch nicht mit WP7.8.

Aber was ist „nativer Code“ überhaupt. „Moderne“ Programmiersprachen wie Java und C# (welches vom WP7 verwendet wird) werden genau so wie native Programme kompiliert, der Unterschied ist allerdings, daß nativer Code für einen speziellen Prozessor kompiliert wird (in Maschinensprache) und Sprachen wie Java und C# (welche man auch als managed Code bezeichnet) werden für eine virtuelle Maschine (VM) kompiliert. Diese VM ist ein generelles Computermodell. Der Vorteil dabei ist, daß diese virtuelle Maschine auf unterschiedliche Plattformen portiert werden kann, die es dann ermöglicht, daß das jeweilige Programm auf dieser Plattform ausgeführt werden kann. Weiterhin kann während der Ausführung der Code weiter auf die tatsächliche Plattform optimiert werden, was bei nativem Code nicht möglich ist. Bei C# werden eine Reihe von Plattformen unterstützt: Windows PCs, Windows Phone 7 (und 8), Microsoft’s neues Surface (sowohl in der Pro, als auch in der WinRT Variante), MacOS, Linux, Android, iOS. Die wichtigsten sind also dabei. Der Nachteil von diesem Managed Code ist jedoch, daß diese doppelte Übersetzung ein wenig Zeit kostet. Ein gut optimiertes natives Programm läuft deutlich schneller, als ein managed Programm. Der Entwicklungsaufwand für ein natives Programm, insbesondere der Optimierungsaufwand ist jedoch deutlich höher. Dies bedeutet unterm Strich: teurere Apps und Games.

Warum aber nun dieser Schritt, warum wird nativer Code überhaupt erst ermöglicht? Das ist relativ einfach: Er ist plattformunabhängiger. Nativer Code wird oft in C++ geschrieben und die Codebasis von vielen Spielen und Libraries ist einfach C++. Diese Libraries und Spiele laufen ebenfalls auf allen wichtigen Plattformen und möchte man diese Spiele auf dem Windows Phone ermöglichen, so ist bisher eine Übersetzung in eine andere Sprache notwendig. Dies kann durchaus einen erheblichen Aufwand bedeuten, den einige Unternehmen nicht gehen wollten. Um diese Games (und wenigen Apps) auch zu ermöglichen, wurde dieser Schritt gegangen. Aber auch wird natürlich einheitlicherer Code mit Windows 8 und Surface ermöglicht, welcher mehr auf die neuen Programmierschnittstellen „WinRT“ setzen.

Was bedeutet dies nun für den Anwender? Erstmal nicht viel. Es gibt mittlerweile 100.000 Apps und Games die in C# entwickelt wurden. Da ist schon eine ganze Menge dabei und das wird sich auch zukünftig nicht ändern. Mit dem erscheinen von WP8 wird es nicht nur native Apps geben, denn der Entwicklungsaufwand ist deutlich komplexer, in vielen Fällen nicht notwendig und viele Entwickler werden einfach nichts neues lernen wollen. Die überwältigende Mehrzahl der Apps, die es aktuell im WP7 Marktplatz gibt, würden von nativem Code keineswegs profitieren und nur dazu führen, daß der Entwickler umlernen muss und die Zeit für die Entwicklung steigt. Es wird zukünftig also immer noch einen nicht unerheblichen Anteil an managed Code im WP8 Marktplatz geben und genau dieser Code wird auch auf „alten“ Geräten laufen, solange keine neue API vom Entwickler verwendet wird.

Aber warum laufen auf dem WP7 dann nicht einfach auch in nativem Code geschriebene Anwendungen? Das hat sicherheitstechnische Gründe. Managed Code läuft in einer sogenannten Sandbox, aus der der Code nicht ausbrechen kann. Ein Programm kann dabei nur auf seine eigenen Daten zugreifen und auf Daten und Schnittstellen, die dafür freigegeben wurden. Dies verhindert effektiv bösartige Programme. Ein Virus oder Trojaner würde in seiner eigenen Sandbox laufen und würde andere Programme und deren Daten garnicht sehen. Der Schaden der angerichtet werden kann geht gegen null. Und genau eine solche Sandbox wird durch managed Code und die dort eingesetzte VM deutlich erleichtert. Da der Code nicht direkt auf dem Prozessor ausgeführt wird, ist dieser von der Außenwelt abgeschnitten.

Bei nativem Code ist dies anders: Nativer Code läuft direkt auf dem Prozessor. Ein kleiner Programmierfehler und schon ist die Sicherheit des Systems kompromittiert (z.B. durch einen Pufferüberlauf). Der Aufwand um diese Art von Programmen abzusichern ist deutlich höher und erfordert oft auch Mitwirkung vom Kernel und dem Prozessor selbst (virtuelle Adressräume etc.). Die Hardware die in den WP7 verbaut ist, ist dazu nicht wirklich in der Lage. Natürlich läuft auf einem WP7 auch nativer Code – der Kernel ist unter anderem in nativem Code entwickelt worden – allerdings würde dies eine riesige Sicherheitslücke bedeuten.

Der Punkt ist schlicht und einfach, daß nativer Code perse keine besseren Programme bedeutet. Viele Indie-Entwickler werden sich nicht an den Umstieg wagen, den dies ist ein steiniger und sehr aufwendiger Weg. Jemand der mit XNA Spiele entwickeln kann ist noch sehr weit davon entfernt, dies auch mit C++ und DirectX machen zu können. Dies bedeutet, daß es auch zukünftig sicherlich noch viele Apps und Games – auch für WP 7.8 – geben wird.

Sicherlich wird es dem ein oder anderen nicht gefallen, daß es keine Updates gibt, aber die Welt dreht sich weiter. Hardware wird sich weiterentwickeln und Software ebenfalls. Das ist nicht das erste mal, daß neue Betriebssysteme alte Hardware nicht unterstützen und das wird auch nicht das letze mal gewesen sein. Das wichtigste ist doch: Wem heute sein Windows Phone 7 gefällt, der kann es auch nach der Veröffentlichung von Windows Phone 8 weiterhin benutzen…

Advertisements

Veröffentlicht am 21.06.2012, in C#, DirectX, Gerüchteküche, Hardware, News, Random Noise, Windows 8. Setze ein Lesezeichen auf den Permalink. 15 Kommentare.

  1. Da „alte“ WP7 Apps auch auf WP8 laufen gehe ich mal davon aus dass es XNA immer noch geben wird, nur das man bei WP8 auch das HiDef Profile aktivieren kann (Custom Shaders und „unsafe“ code, sowie einige weitere Limitierungen die wegfallen). Falls man will kann man neu auch auf XNA verzichten und direkt mit DirectX ans Werk (wird eigentlich DX 9 oder DX 11 unterstützt?). Ich denke mal für die meisten Entwickler wird sich nicht vieles ändern. App Entwickler brauchen weiterhin WPF und C#, Game Entwickler XNA und C#. Nur High-End und portierte Games werden wirklich nativen Code verwenden, für die meisten Spiele wir XNA weiterhin reichen (sogar locker wenn wirklich Custom Shaders erlaubt sein werden).

    Zu WP8 muss man nur sagen: WOW! Wenn man die neuen Features mit denen von iOS6 vergleicht ist klar: Microsoft gibt richtig Gas! Meiner Meinung nach ist WP8 nun sogar leicht vor Google und Apple wegen dem unified Kernel. Einzig die Anzahl von Apps spricht für die Konkurenz, aber da hat der Marketplace deutlich aufgeholt und das meiste (bei allen 3 Stores) ist eher als Müll zu bezeichnen. Ich freue mich!

  2. Ich glaube nicht, daß sich am „XNA-Status“ irgendwas ändern wird und ich glaube auch nicht, daß auf WP8 XNA-HiDef-Apps ermöglicht werden.

    Microsoft empfielt für die Windows 8 Spieleentwicklung weiterhin: DirectX 11.1 und C++. Eine Ausnahme stellen „einfache Spiele“ dar, also solche, die ohne DirectX auskommen.

    • Währe es nicht etwas schade wenn man mit XNA auf dem Phone keine eigenen Shader verwenden kann, obschon man dies mit Direct X durchaus tun könnte und XNA für Windows und Xbox 360 genau dieses Feature bietet? Es währe doch auch im Sinne von MS wenn man bestehende Spiele mit einfachen Shader Effekten etwas „aufmotzen“ könnte:-P

      • Sicherlich wäre das schön, aber scheinbar hat Microsoft sich ja für einen anderen Weg entschieden. Die Empfehlung für Games unter Windows 8 (und damit höchstwahrscheinlich auch auf dem WP8) lautet: DirectX 11.1 und C++. Alles andere wäre ja auch im Grunde genommen eine Weiterentwicklung von XNA. Ich persönlich fände es toll, wenn dies passieren würde, ich glaube aber nicht daran.

        XNA Programme müssen auf dem WP8 laufen, damit die „100.000 Apps und Games“ zum Start gehalten werden. Das wird aber sicherlich nicht der „way to go“ für die Zukunft bleiben, sondern eher ein Übel, daß eingegangen wurde.

  3. Im Grunde kann ich dir nur vollkommen zustimmen. Dennoch „verpackt“ Microsoft das ganze meiner Meinung falsch: Beispiel IOS 4. Das brachte Multitasking, was aber auf den alten Geräten nicht lief. Trotzdem haben diese IOS 4 bekommen und nicht nur 3.8.
    Effektiv haben die das tollste des neuen OS nicht bekommen, hatten aber immer noch das Gefühl, ich bin up to Date soweit meine Hardware das hergibt.

    Natürlich ist WP 8 technisch komplett was anderes als WP 7. Als Entwickler ist es natürlich ein Unding eine Update für WP 7 einfach als WP 8 zu bezeichnen, dennoch wäre das viel geschickter, denn die Kunden hätten immer noch das Up to Date Gefühl. Technisch wären es zwei komplett andere Versionen, die nur den gleichen Namen hätten. Aus Entwicklersicht nicht besonders toll, aus Marketingsicht aber ein kluger Schachzug. So macht sich Microsoft einfach zu viel negative Presse.

    So sehe ich das 😉

    • Ja, du hast vollkommen Recht… Das wäre eine Möglichkeit gewesen, die ich eigentlich auch besser gefunden hätte… Das war vielleicht nicht der geschickteste Schachzug… Was man aber Microsoft zugute halten must: Sie belügen so NICHT den Kunden, so wie es andere Firmen gerne machen 😉

  4. Hier noch ein kleiner Nachtrag zu XNA auf WP8:

    „@limitedmage – While not explicitly called out, XNA is very much a part of Larry’s statement ‚today’s Windows Phone applications and games will run on the next major version of Windows Phone.‘ XNA is fully supported in the next major version and remains part of the Windows Phone family. We remain committed to supporting our developers‘ existing skills and code as we move ahead – together.“

    Quelle: http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/04/05/windows-8-and-the-windows-phone-sdk-pt-2.aspx

    XNA sollte also weiterhin unterstützt werden:-P

    • Ja, daß ist doch selbstverständlich, keine Frage. XNA wird ja auch unter Windows 8 „unterstützt“. Jedes XNA-Game läuft auch unter Windows 8. Der Punkt ist aber, daß man ein XNA-Game nicht in den Windows Marketplace einstellen kann. Beim Windows Phone geht dies über die „Hintertür“ des „alten“ Marktplatzes. Das ist geschickt, denn so werden einige tausend Games zum Start verfügbar sein auf dem WP8.

      XNA wird langsam „auslaufen“, denn die neue Welt kann man damit nicht mehr wirklich bedienen und der „alte“ Marktplatz wird auch nicht ewig laufen. Ausserdem wäre ein Update von XNA notwendig um die neuen Features des WP8 zu unterstützen und ob das kommen wird?

      Aber tolle Sache, daß man so noch eine „Gnadenfrist“ hat 🙂

  5. Das ist mal ein schöner Blogeintrag..nicht weil er keine Bilder erhält nein.. weil du die Sache auf den Punkt gebracht hast. Ich hab gestern (20.06.2012) mein Lumia 900 bekommen, klar könnt ich es zurückschicken, nur wieso? Ich liebe WP7, finde es ein echt tolles OS mit dem ich alles was ich brauche machen kann. Wer braucht einen HDMI ausgang ham Handy? ich nicht, ich hatte mal ein Handy (Nokia N900) mit so einen Ausgang, aber ich hab glaub ich 1 Mal Super Nintendo am TV gezockt.. Sprich kommplett sinnlos *gg*

    Sollte man dann vielleicht schon der Typ Mensch sein der seine Pärsentationen mitnehmen mag um zu glänzen, dann haben wir ab Herbst sowieso das Surface.

    Kann hier sofort zig Leute aufzählen die ihre IP*d3 Bestellung stoniert haben als Mircosoft das Teil angekündigt hat. Aber das ist ja hier nicht das Thema..

    Vorerst schon mal bin ich happy und schau auch glücklich in die Zukunft. Denke Mircosoft macht derzeit zwar viele Schlagzeilen, aber sie machen es auch richtig! Denek mit Windows 8, WP8, und den Surface + Smart Glass werden sie 2013 so richtig abrocken!

  6. @Glatzemann: Lohnt es sich dann überhaupt noch, Spiele in XNA zu entwickeln? Ich für meinen Teil höre mich gerade ein bisschen um, da ich in diesen Bereich des Programmierens gerne einsteigen möchte. Sollte mit WP8 und Windows 8 das „Ende“ von XNa gekommen sein, denke ich mir schon, dass es nicht wirklich notwendig ist, XNA zu erlernen nur um dann festzustellen, dass es nicht mehr/nicht mehr so gut unterstützt wird und ich (sinnloserweise) Zeit verschwendet habe.

    Also, lohnt es sich, damit anzufangen oder lieber gleich in C++ und DirectX 11.1 einsteigen?

    • Ich habe hier einen interessanten Forenpost für dich. Dort hatte jemand eine ähnliche Frage und ich habe eine ausführliche Antwort dazu geschrieben.

      Das Credo: XNA wird zwar nicht weiterentwickelt, ermöglicht aber einen einfachen Einstieg in die Spieleprogrammierung. Du wirst schnell und unkompliziert an die DirectX Programmierung herangeführt, ohne dich von Anfang an mit dessen gesamter Komplexität herumschlagen zu müssen. So erzielst du schneller Ergebnisse, was gut für die Motivation ist. Wenn du in XNA fit bist und verstehst, warum die Dinge und Einschränkungen so sind, wie sie sind, dann kannst du immer noch auf natives DirectX (entweder mit C++ oder z.B. SharpDX mit C#) umsteigen und dich weiterentwickeln. Die Grundlagen hast du jedenfalls mit XNA geschaffen und das wird dir den Einstieg deutlich erleichtern.

      Gerade am Anfang wirst du eh häufig Projekte starten und dann wieder verwerfen. Das ist relativ normal bei einem solchen Lernprozesses, daher der wichtige Tipp: Nicht von Anfang an mit riesigen Projekten anfangen. Das wächst einem schnell über den Kopf, daher: Klein anfangen und viel üben.

  1. Pingback: RIP XNA « "Mit ohne Haare"

  2. Pingback: MVP Award 2013 | "Mit ohne Haare"

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: