Languages, tools and frameworks

[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]

About to build a Windows Store or Windows Phone Store app and wondering where to start? With C++, C#, Visual Basic, JavaScript and a huge range of libraries to choose from, the answer is "wherever you want!"

Moving to (or returning to) a new platform can be daunting. New tools, new controls, even new programming language... Where do you even start?

The good news is that Windows is a very flexible platform, with many different development approaches. Typically you start with Microsoft Visual Studio: the compiler and development environment. Visual Studio is available in several different forms, from the freely downloadable express editions to powerful enterprise-strength professional editions. You can download them from the Developer downloads for programming Windows Store apps. Use Visual Studio Online as your source code repository: see Source control with Visual Studio.

With Visual Studio, you can write apps for Windows 8 and Windows Phone 8.1 in JavaScript, C#, Visual Basic or C++, or a combination. To help you quickly get your apps onto the store, the .NET Framework, XAML library and WinJS library include advanced features and user interface controls. Speaking of UIs, Blend for Microsoft Visual Studio 2013 is a companion app that allows you to mock up and then use your UI right from within Visual Studio. If you are going to target both Windows and Windows Phone devices, create a single Universal Windows app and manage everything in one solution!

Choices, choices

Ultimately which programming language and framework you choose to work with depends on things like:

  • How comfortable you are with a specific language
  • The importance of performance compared to ease of development
  • The specific features your app needs
  • Your need for cross-platform code with minimal duplication of effort

You might decide there's no "best way." The final app might be a combination of many different languages — which is an approach which Visual Studio supports. See Getting Started: Choosing a programming language.

Choosing a programming language

As a starting point, here's a list of suggested languages mapped to specific app genres. Your exact needs and skills will be the deciding factor.

App genre Suggested language(s)
2D casual game
  • C# and XAML
  • JavaScript and HTML5
  • C# and MonoGame
  • C++ and Direct2D
  • Unity3D
  • Other game authoring system
2D arcade game
3D fast-action game
Information app (displaying information such as weather, stock price, news, or social network updates)
  • C# and XAML
  • JavaScript and WinJS
Education app (displaying images and text, with simple 2D animation and sound)
  • C# and XAML
  • JavaScript and HTML5
  • C++ and Direct2D
Business app (displaying, storing and editing data with sync)
  • C# and XAML and Azure
Website conversion (for example, a locally running version of a corporate website)
  • JavaScript and WinJS
An app that will also be ported to run on Windows Phone, iOS, and Android

 

Learning a new language

Although Windows doesn't directly support development using Swift, Objective-C or Java, it turns out that these languages have much in common with C#. If your experience is more web-based, you'll love that you can use JavaScript to create native apps, with help from the WinJS support library to provide the powerful controls on both Windows 8.1 and Windows Phone 8.1 controls. Like jQuery? Use it too!

Developer roadmaps

To create a Windows Store app, you'll need to become familiar with at least one of the supported programming languages: C#, C++, Microsoft Visual Basic, or JavaScript. Depending on which language you choose, you might also need to learn about Extensible Application Markup Language (XAML), the Windows Runtime, HTML5, and Cascading Style Sheets, Level 3 (CSS3). Does it sound overwhelming? We can help. Follow these links to hands-on app-building exercises and start learning from there as you go:

Code libraries, toolkits and other sources of help

Microsoft Azure: Get started with Mobile Services

Porting an iOS app to Windows 8