Windows 8 has officially been released to manufacturing and all of us developer types will get our hands on the final version very soon. I know that there have been some very critical comments of Windows 8, especially critical of the decision to make the new Metro interface the default for desktop users. Those that know me have heard me speak negatively about some Windows 8 decisions as well. Unfortunately, all the negative reports on one detail are overshadowing a lot of great things available in Windows 8. I’ve been using Windows 8 on a VM since the Consumer Preview released in February and I see a lot of great potential for Windows 8.
Windows Runtime (WinRT)
The Windows Runtime library or WinRT is the provider of services for applications in Windows 8. It’s the engine which gives us the Metro interface, contract services, roaming services, and much more. WinRT sits right on top of the core OS kernel, close to the metal. When you launch a Metro interface app, WinRT creates a DirectX graphics surface giving your application hardware acceleration previously available only to the most serious Win32 developers. WinRT was written from the ground up to support asynchronous operations. That means a much more responsive application and a better experience for the end user. For the developer, it means your application will be able to use more CPUs for your app without writing primitive and complicated code.
Windows Apps in HTML and Javascript
I can finally build a Windows application using HTML, CSS, and Javascript. Why am I so excited about this? Well two reasons. First, developing an HTML interface has always been much more productive than developing a Win32 interface. Rebuilds are a nuisance with traditional windowed interface development. Windows development always meant rebuilding the app even for simple changes. Waiting for a rebuild to see simple changes can be painful. HTML development usually just means hitting F5 from the browser. Metro style Javascript apps get a similar experience during development. That makes me happy.
When I tell a lot of people that you can develop windows applications with HTML and Javascript, the first thing they want to discuss is application portability. But even though you are using HTML and Javascript, you are still accessing a lot of Windows 8 specifics. So porting to the iPad won’t be free. Instead, it’s really about developer and skill portability. Many young developers have a lot of HTML, Javascript, and CSS skills because it’s usually the first programming they learned. To them Windows UI programming is old and tired. But now they can use their web development skills to also develop Windows 8 applications.
App contracts
It is hard to find a new app that doesn’t let you Tweet something or post to Facebook. Consumer apps built to service social sites have advanced awareness of application interaction more than ever before. Taking cues from this movement, Windows 8 will feature communication between services and applications. Metro apps use contracts to declare themselves eligible for specific types of interaction with other apps and services. For example, you can implement the share contract and share content between apps that also supports the contract. Imagine your Metro app that allows a user to take a picture with the camera, your app then launches the users’ preferred photo editor app. When the photo edits are complete, the edited version of the photo ends up back in your application. That’s the idea behind contracts.
That’s three of my favorite new features in Windows 8. There are some other things like roaming data, storage spaces, faster boot times, and Windows To Go are other great new features that I sadly don’t have the space to write about. Don’t form your opinion on Windows 8 until you’ve had a chance to really see what it’s all about.