Starting with the introduction of the personal computer in the late 70s and early 80s, desktop software development programs and applications became the de facto standard for mass publishing applications and distributing computing functionality. Numerous industries, from government and defense programs to business applications and games became a huge market for development of desktop software application. With this demand, large numbers of software applications were written by software development professionals focused on specific hardware platforms and software environments. Operating systems were developed to take advantage of the new personal computer and provide continuously better functionality and features for customers and business users.

The modern desktop software development landscape is drastically different than that of 10 or even 5 years ago. Today’s power virtual machines and GUI (Graphical User Interface) frameworks make creating custom desktop software that is powerful, attractive, and functional much easier than it was before. With several programming languages and software development toolkits available, one of the biggest challenges in creating a custom desktop application is to select your IDE (Integrated Development Environment) or toolkit of choice.

The most significant difference between web application development and desktop software development is the concept of a system state.  A “state” refers to the current settings in the software program. Most programming languages require a significant amount of state information to properly operate.  Desktop applications continuously remember the state of each control, but web applications are inherently stateless, i.e. the Web server will forget state information after rendering the web page to the browser. So, the difficulty of software development for web application is implementing logic in order to track state information. Common techniques to track state information include using hidden form controls or cookies to save the previous state.  Use of custom JavaScript programming is also a more secure technique to keep track of control states. However, additional JavaScript makes debugging tasks difficult since in many IDE’s, such as Visual Studio 2005, there is no IDE interface to track break points for JavaScript.

As a consumer looking to build your first desktop application, or wanting to add additional features or functionality to your existing suite of applications, here are some of the questions to keep in mind during your selection criteria:

  • Does my solution really need to be a desktop application?
  • Do I want to support any type of connectivity/network access?
  • What do I currently support in my IT (Information Technology) environment, such as operating system or hardware?
  • What are my performance requirements?
  • Do I want to expand the reach of my application in the future?

Significant events & products in desktop software development:

  1. Introduction of the personal computer (late 70s?)
  2. Release of VisiCalc (1980)
  3. WordPerfect 4.2 in 1986
  4. Windows 3.1 (1992)
  5. X11
  6. Visual Basic
  7. Windows 95
  8. Java
  9. .NET
  10. Adobe AIR
  11. QT