In addition to the programming language and
development technology, there is another important consideration
scarcely mentioned before. Windows 8 totally changes not only the way
users work with applications, but also the way they discover, install,
and remove programs. This new installation model may inspire you to
create Windows 8 style applications instead of desktop apps, so this
might be a good time to take a brief overview of it.
The Windows Store
In previous Windows operating systems,
you had to create installation kits and deploy your applications by
running those kits on the target computers. Your users had to
understand a few technical details of the installation process, such as
selecting the target folder, installing prerequisites, adding shortcuts
to the desktop, and so on. Often, the installation process was a source
of fear — will this installation override something on your computer to
prevent other applications from running properly? Further, unnecessary
applications had to be removed and often cleanup utilities were needed
to remove the garbage heap left by those apps.
The consumer-centric approach cannot work without
a significantly easier way of obtaining and releasing applications.
Windows 8 style applications can be installed only from the Windows
Store, which is an online service. As a developer, you can upload your
application to the Windows Store, where it goes through an approval
process before users can discover and install it. As a user, you can
find an application in the Windows Store and, after buying it (or
choosing to try it free, or even using it free when the application
allows it), let the operating system install the app for you. If you do
not need the application any more, Windows 8 will instantly uninstall
it and take care of the cleanup process — releasing all resources held
by the app.
Windows 8 or Desktop Applications?
The first thing you should decide is whether you want to create Windows 8 style applications or desktop applications. Table 1 helps with your decision by distinguishing a few points of consideration.
Table 1: Helping Points to Choose between Windows 8 Style and Desktop Applications
You have no, or very little, experience in Windows programming. | You have more experience in Windows programming — moreover, you’re a seasoned Windows programmer. |
You’re focusing on applications with a superior user experience. | You’re
focusing on applications where you intend to utilize the UI
technologies (Windows Forms, WPF, or Silverlight) you already know. |
You have a relatively small UI codebase to reuse. | You have a large amount of code related to the UI, and you want to reuse the knowledge carried by that codebase. |
Your application works on a single Windows
computer. Your application’s primary focus is providing a UI for
services and remote components accessed through the Internet (or
company intranet). | Your application is
distributed into several components, including UI, business services,
and databases. UI application components use legacy, vendor-specific,
or proprietary communication technologies to access other services. |
Your application intends to leverage the user experience and device features offered by mobile devices, such as a tablet. | Your application is primarily used on desktop computers and/or integrates with existing applications. |
You want to leverage the easy application deployment model offered by the Windows Store. | You need a more complex deployment model than provided by the Windows Store. |
You can use (that is, you are allowed to
use) C++, C#, Visual Basic, or JavaScript programming languages to
create your application. | Besides the set
of C++, C#, Visual Basic, and JavaScript, you need to use other
programming languages heavily to create your application. |
If you participate in a complex project, you
obviously cannot use the Windows 8 style technology stack for the
entire project — often you need to do server-side development. However,
it is worth examining the UI components of your system that you can put
through and that might be implemented as Windows 8 style applications.
Choosing a Programming Language
You can use several languages for Windows 8 style application
development — C++, C#, Visual Basic, and JavaScript. If you prefer any
of them, do not hesitate to start using that language.
If you have no or very little experience with
Windows programming, or are uncertain which language would have the
shortest learning curve, here are several clues to help with your
decision:
- If you have experience with web page design and website creation,
you certainly know HTML, and probably have experience with CSS and
JavaScript. Start creating your first Windows 8 style programs with
JavaScript.
- If you have used macros in Microsoft Word and Excel, Visual Basic is probably the language you should start with.
- If your experience is about programming algorithms rather than UI,
then C++ and C# are your best choices. C# is probably easier to learn;
C++ provides more control over low-level programming constructs.
One of the best things about Windows 8 style
application programming is that you are not obligated to stick to only
one language! You can even use more than one programming language
within an application. For example, if you have web programming
experience with JavaScript, you may create your UI with HTML and
JavaScript, but still consume more complex application logic written in
C# and high-performance algorithms programmed in C++.
Even if you start application
development with one of these languages, it is worth learning other
ones — because each of them has its own strength. When you have short
deadlines or want to be more open toward other platforms, knowing
several languages and getting used to mixing them reasonably is
invaluable.