Also known as GUI, from my point of view this is a very important subject when we talk about software development. There are a lot of applications that solve similar problems and tasks, but the most of them are more successful over others by a very major factor, and that is the application design, which includes the graphic, and functional design. The main aspect that I wish to debate here is the graphical one, because from my opinion regarding the level technology succeeded to reach is not fully used, and where this is used at fully capacity this is made in a wrong way.
The example I wish to give to sustain my opinion is the evolution of the most useful software of them all, the operating system (OS). I will not write a history of OS already written by others but, a graphical evolution summary.
The most known latest OS are made by Microsoft (Windows 7), Apple (MAC OS X - Leopard) and of course the one that is made by everybody, Linux (with lots of distribution versions like Ubuntu 9.04 which is one of the most familiar ones).
* I’ve ommited many operating sistems like the embedded ones, and other that are not used as much as the above mentioned ones liek QNX
Very short and fast graphical evolution of every OS:
Microsoft - Windows
* Windows 2.0, Windows 98, Windows XP , Windows 7
Apple - MAC OS X
* MAC OS X appears in 24th of March 2001, development based on OPENSTEP and BSD Unix and it evolves very quickly
Linux - Ubuntu
* Based on Debian which is based on Linux which is based also like MAC OS X on Unix, in evolved also very fast udner an open development
They all start from a raw OS represented by a terminal used for receiving input from users to do a limited set of operations most of them low level, and heading over to a windowed interface, using devices like the mouse, touchpads and others to ease the usage of the features provided by every operating sistem.
From the basic usage of buttons, resizeable windows, editable textareas and radio boxes using mostly the cursor, the OS’s aim to replace this style with the touch sensible input devices like the touchscreens.
Development Platforms
And now the applications made for this OS’s, which are native or managed. This means that some of the compilers result a native executable code, and a managed one or interpreted which is basically executed by a virtual machine in some cases or a similar system.
I will mention here two of them, which from my opinion are sharing the same level on the heights of evolution, by succeeding to release a power solution for a large scale of online applications, most of them directly from the browser.
1. Adobe Flash
A very familiar product for many internet users because many reached a website where if they didn’t had the Adobe Flash Player to play a specific website flash based content, and had to install id. This is one of the most successful internet custom content player plugin if not the best, because this content could play video and audio streams, could make vector based animations using a very high variety of effects available like the blur effect, glow, blending, masking, and many others.
The player got faster and more reliable with better graphics so Adobe decided to extend this technology with a application development framework that got the name Flex (Adobe Flex Builder), provinding a ful lset of features for developing any king of application standalone or browser dependable.
2. Microsoft Silverlight
Silverlight developed by Microsoft tries to achieve the same results or close to Adobe Flash, still being even now under development with some major lacks of features considering what Adobe’s offered by now. The main idea is that this also will be a tool similar to Flash Player and also will develop good looking application with a very “gorgeous” application interface design as we can see from some screenshots of what Microsoft Expression Blend 2 can do.
3. 3D Browser Plugins (possible GUI solutions)
Used mostly for games or demos, 3d viewers, not for applications but that doesn’t mean it’s not possible. Unfortunately this plugins are hard to connect with Flash player for example, and not all the browser plugins offered by this 3d engines are browser compliant.
4. Other development platforms with GUI features
Other existent platforms development platforms, either are hard to implement requiring too much time to sacrifice for using in a application, or the possibilities of connecting with other functionality of the operating system are dependent of other libraries and so on.
This are platform that can be used to build cross platforms standalone applications, using even 3D acceleration for rendering. Used only for well defined applications types like 3D applications (games), standard application etc.
- Ogre 3D - visit
- Irrlicht - visit
- wxPython - visit
- Microsoft DirectX 10 (Windows only)
- Microsoft .NET
- … many others
Conclusion ?
It’s very obvious that the current target of applications is aiming to online functionality, mostly straight from the browser. This gives the posibility of any user to access the desired content or application functionality from anywhere and anytime. So if we should talk about future applications I belive this is the right area, by using great graphics in a application for a large variety of software users this will become a main target platform for many technologies like those described abouve.
- Positive elements (many of them supported only by Flash)
- Vectorized graphics, providing this way a fast loading of graphic contents, great graphic details
- Multimedia streaming, high quality audio and HD video support, and high loading speeds (Flash Player 10)
- A very flexible development environment, with enormous possibilities of implementation
- Cross platform, by being browser dependent
- 3D accelerated graphics, providing enormous more drawing speed (Flash Player 10)
- Negative elements
- Nonnative executable code, interpreted by “players”, losing some speed there
- Almost nonexistent portability possibilities of those technologies on a lower layer like the OS ’s windows rendering system
- Sandbox security limitations, giving the developers a short list of OS layer operations (File System, OS Processes)