When Microsoft gave the first public demonstration of Windows 8
a week ago, the reaction from most circles was positive. The new
Windows 8 user interface looks clean, attractive, and thoughtful, and in
a first for a Microsoft desktop operating system, it's finger friendly.
But one aspect of the demonstration has the legions of Windows
developers deeply concerned, and with good reason: they were told that
all their experience, all their knowledge, and every program they have
written in the past would be useless on Windows 8.
Key to the new Windows 8 look and feel, and instrumental to
Microsoft's bid to make Windows a viable tablet operating system, are
new-style full-screen "immersive" applications. Windows 8 will include
new APIs
for developing these applications, and here is where the problem lies.
Having new APIs isn't itself a concern—there's simply never been
anything like this on Windows before, so obviously the existing Windows
APIs won't do the job—but what has many troubled is the way that
Microsoft has said these APIs will be used. Three minutes and forty five
seconds into this video
,
Microsoft Vice President Julie Larson-Green, in charge of the Windows
Experience, briefly describes a new immersive application—a weather
application—and says, specifically, that the application uses "our new
developer platform, which is, uhh, it's based on HTML5 and JavaScript."
Cue much wailing
and gnashing
of teeth
.
Windows developers have invested a lot of time, effort, and money
into the platform. Over the years, they've learned Win32, COM, MFC, ATL,
Visual Basic 6, .NET, WinForms, Silverlight, WPF. All of these
technologies were, at one time or another, instrumental in creating
desktop applications on Windows. With the exception of Visual Basic 6,
all of them are still more or less supported on Windows today, and none
of them can do it all; all except Visual Basic 6 and WinForms have a
role to play in modern Windows development.
Hearing that Windows 8 would use HTML5 and JavaScript for its new
immersive applications was, therefore, more than a little disturbing to
Windows developers. Such a switch means discarding two decades of
knowledge and expertise of Windows development—and countless hours spent
learning Microsoft's latest-and-greatest technology—and perhaps just as
importantly, it means discarding rich, capable frameworks and the
powerful, enormously popular Visual Studio development environment, in
favor of a far more primitive, rudimentary system with substantially
inferior tools.
A justified reaction
The idea of Microsoft discarding all of that expertise seems crazy,
and one might think that the developer response is an overreaction—but
it's seen as confirmation of the direction Microsoft already appears to
be heading down: moving HTML5 to the foreground, in spite of its
inferiority to other technology. The Windows 8 comment made by
Larson-Green was shocking, yes, but seemed to be confirmation of what
developers were already suspicious of. Developers aren't willing to
assume that the company is going to do right by them, because the
messaging from the company has given them every reason to believe that
the Larson-Green really meant what she said; if you want to use the new
development platform, you're going to have to use HTML5 and JavaScript.
The company has never exactly been good at picking a direction for
its development strategy and sticking with it. Too much in-fighting, too
many leaps aboard new technology bandwagons, and too much software that
fails to adopt new paradigms. But until about a year and a half ago, it
looked like things were beginning to settle down, with the combination
of .NET, Windows Presentation Foundation (WPF), and WPF's Flash-like
sibling, Silverlight. WPF and .NET provide a flexible, high-level, and
structured approach for writing GUI applications, and Silverlight is a
cut-down version of WPF that can be used as a browser plugin on both
Windows and Mac OS X.
Neither of these technologies was perfect—WPF has never been as fast
as it should have, and Silverlight is not as cross-platform as it ought
to be—but the set of products did at least represent some kind of a
coherent vision for software development. WPF and .NET for big
applications, Silverlight for portable ones.
Hopes dashed
But then Internet Explorer 9 happened. Microsoft jumped on the HTML5 bandwagon, and that's when things all got rather muddy
.
Prior to Internet Explorer 9, Silverlight had been the company's
preferred solution for developing rich cross-platform applications. The
lack of broad platform support meant that Silverlight could never quite
rival Flash on this front, but it was there, and it worked well on those
platforms that were
supported. With Internet Explorer 9,
however, Silverlight took a back seat. HTML5 became the way forward. If
Silverlight were to be used at all, it should only be used for those
things that HTML5 couldn't do very well, such as streaming video. For
anything else, the message was that developers should use HTML5.
Microsoft did have a point. If you're really wanting to target people
on any platform, HTML5 is the way to go. For Web-facing applications
that don't have any special needs such as DRM video, HTML5 is the
long-term bet. But third-party developers were deeply unhappy when this
repositioning was made explicit, and they had a point too. For a
developer writing an internal-use line-of-business application, one for
whom depending on a browser plug-in is not a problem, Silverlight had,
and still has, a lot of points in its favor.
HTML5 remains true to its text mark-up heritage; its structure and
semantics are still geared towards creating structured text documents,
not application user interfaces. Where Silverlight programs can deal
with buttons, icons, list boxes, tree views, and other interface
controls, HTML5 applications must generally deal with boxes of text,
with no higher-level concepts to work with. There are JavaScript libraries
that attempt to bridge this gap
,
but they lack the capabilities and control that Silverlight offers.
Ultimately, if one were to design a framework for creating user
interfaces, it would look a lot more like Silverlight than it does
HTML5.
Another weak area for HTML5 is tooling. Design and development tools
that work with HTML5 are not as developed or as robust as those that
exist for Silverlight, making HTML5 development more complicated,
especially as application complexity increases. Thus far, though the
company has continued to promote it as the first choice for
browser-deployed applications, Microsoft has done little to address
these issues with HTML5.
Redmond has, however, done something with HTML5 that it has never
bothered to do for either Silverlight or WPF, and that's make it fast
.
Internet Explorer 9 builds on top of an API called Direct2D. This is a
2D graphics library that uses Direct3D 10 for acceleration. The Direct2D
API is even lower-level than HTML5; while HTML5 pages are basically
built up of text boxes, these boxes do have some "intelligence" of their
own; they have layout rules, borders, backgrounds, and more. Direct2D
in contrast can handle little more than curved lines (or groups of
curved lines), with every aspect of layout left to the developer. And
unlike the inefficient way in which WPF uses Direct3D
, Internet Explorer 9 and Direct2D have been optimized and are far more efficient.
With Internet Explorer 9, Microsoft was therefore telling its
developer community two things: HTML5 is the preferred technology,
regardless of its suitability or desirability, and if you want high
performance you can either use the low-level Direct2D from C++
directly—unpalatable—or the mid-level HTML5. If you want a high-level,
purpose-built API with high performance (a version of WPF built on top
of Direct2D, for example) it isn't going to happen
.
The Windows 8 comment thus seems to be the culmination of Microsoft's
policy of the last few years. HTML5 was already the blessed development
platform in spite of its many failings, and with Windows 8 developers
were going to be faced with little alternative but to embrace these
inadequate technologies if they wanted to produce new-style immersive
applications. As crazy and destructive as this policy appears, it has
the feeling of consistency. Internet Explorer 9 and the downplaying of
Silverlight were the first step down this path; immersive applications
requiring use of HTML5 are the next.
相关推荐
### Windows 7 for Developers #### 引言 随着Windows 7操作系统的发布,开发者们迎来了一个全新的技术时代。为了帮助开发者更好地理解并利用这一新平台的功能,《Introducing Windows 7 for Developers》一书...
Software Architecture for Developers is a practical and pragmatic guide to modern software architecture, specifically aimed at software developers. You'll learn: The essence of software ...
He has worked on corporate intranet applications used by some of the largest companies in the world and large-scale consumer websites such as MyYahoo! and the Yahoo! homepage. He regularly gives ...
.NET MAUI for C# Developers 英文书翻译版 .NET MAUI是一种跨平台的应用程序框架,允许开发者使用C#和XAML创建跨Windows、Mac、iOS和Android平台的应用程序。.NET MAUI for C# Developers是一本英文书翻译版,旨在...
Pentaho 8 Reporting for Java Developers 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
Linux for Developers shows you how to start writing great code for Linux, whether you’re a Linux user with little or no coding experience, or an experienced Windows programmer. Leading IT trainer/...
The Kinect for Windows SDK beta is a starter kit for applications developers that includes APIs, sample code, and drivers. This SDK enables the academic research and enthusiast communities to create ...
Professional JavaScript for Web Developers is the essential guide to next-level JavaScript development. Written for intermediate-to-advanced programmers, this book jumps right into the technical ...
《Kotlin for Android Developers》中文版是一本专为Android开发者设计的Kotlin编程语言教程。这本书深入浅出地介绍了Kotlin的基本概念、语法特性以及如何在Android开发环境中有效利用Kotlin进行应用程序开发。通过...
### Windows 10 for Developers: Tools & Features 随着技术的发展,Windows 10 不断更新迭代,为开发者提供了丰富的工具和特性。本文将基于提供的文件信息进行深入解析,旨在为开发者提供一个全面了解 Windows 10 ...
Drupal 7 for Windows Developers 是一本专为在Windows环境下工作的开发者设计的指南,旨在帮助他们熟练掌握Drupal 7的内容管理系统(CMS)的使用和开发。Drupal是一个开源的、高度可扩展的平台,广泛用于构建复杂的...
This course offers Python developers a detailed introduction to OpenCV 3, starting with installing and configuring your Mac, Windows, or Linux development environment along with Python 3. Learn about...
Studio for Windows Phone supports the Metro UI design and interaction guidelines specified by Microsoft. By default, each control supports a Metro look and automatically inherits the dark or light ...
The first half of SQL Server for C# Developers Succinctly has a focus on C# and development while the second half focuses on troubleshooting using the SQL Server tools. Table of Contents ...
《MKS Toolkit for Developers 8.0:Windows平台上的UNIX风格开发利器》 MKS Toolkit for Developers 8.0是一款专为软件开发人员、脚本编写者以及互联网开发者设计的强大工具,尤其适用于Windows操作系统环境。它...
《Cryptography for Developers》这本书是面向开发者的一本详细介绍密码学的资源,旨在...通过学习《Cryptography for Developers》,开发者可以掌握这些关键概念和技术,并将其应用于实际项目中,提高软件的安全性。
Studio for Windows Phone supports the Metro UI design and interaction guidelines specified by Microsoft. By default, each control supports a Metro look and automatically inherits the dark or light ...
The Kinect for Windows SDK beta is a starter kit for applications developers that includes APIs, sample code, and drivers. This SDK enables the academic research and enthusiast communities to create ...