Official website for Linux User & Developer
FOLLOW US ON:
Mar
24

Linux – A supercharged development environment

by Kunal Deo

Linux is not just another operating system, but a complete stack of technologies that virtually any developer will enjoy. It doesn’t matter if he or she is coming from Windows, Mac or any other OS – there is something for everyone. This feature looks behind the scenes and finds out what really makes Linux tick as a development platform…

This article originally appeared in issue 84 of Linux User & Developer magazine.
Linux User & Developer
,
one of the nation’s favourite Linux and Open Source publications, is now part of the award winning Imagine Publishing family. Readers can subscribe and save more than 30% and receive our exclusive money back guarantee – click here to find out more.

Linux has come a long way from being just a geek’s operating system. But there is no doubt that Linux is still the best operating system for geeks and developers. The effect of Linux as a development environment has not just been limited to Linux, but has spread on all systems including embedded devices. Projects like Firefox, FileZilla, Qt and SuperTux were originally created on Linux and then made their way to different platforms.

It’s certainly not just another operating system, but in fact a complete stack
of technologies that virtually any developer will enjoy. It doesn’t matter
if he or she is coming from Windows, Mac or any other OS – there is something for everyone. This feature looks behind the scenes and finds out what really makes Linux tick as a development platform…

Application development libraries
Application development libraries are the heart and soul of any program. Even for something as simple as a ‘Hello World’ program written in C, you’ll need the stdio (standard input/output) library, because the latter contains a function to display text onto a standard I/O device. So you see, the life of a developer would be nothing without such libraries.

Linux comes with a really large collection of development libraries for a wide variety of tasks. Most of the libraries available on Linux are often cross-platform. Essentially, this means that when you develop an application for Linux, you can easily port it onto other platforms such as Mac OS X and Windows.
Let’s look at the some of the popular libraries available on the Linux platform…

GUI toolkits
GUI toolkits help developers write GUI (graphical user interface) applications

Qt toolkit
Qt is a cross-platform application and UI framework. Qt is probably the best C++ toolkit currently available. And to prove its stability and functionality, there is KDE (K Desktop Environment) which uses Qt from top to bottom. Until recently Qt had a dual-licensing model which made its use in commercial applications very costly. With the release of new LGPL licence, Qt is friendly to both open source and commercial application developers.

KDEDesktop

Qt is very easy to use and it comes with its own set of development tools, including a multiplatform make tool (qmake), a GUI designer and a translation tool. Qt is not only supported on all the major operating systems (Windows, Mac, Solaris and so on), but also on embedded platforms like Maemo, Symbian and Windows Mobile. The best thing about Qt is that when you are porting your Qt application to other platforms, even on an embedded platform it requires very minimal code changes. It supports all the popular compilers, including GCC, Intel C++ Compiler and Sun Studio.

Qt is not just a collection of UI libraries: it also has support for non-UI-specific things like XML parsing, threading and networking, plus the wrappers around popular open source libraries such as CLucene and WebKit. This means that you will rarely need to use any native libraries when using Qt. Qt applications are very easy to translate. The Qt translation system consists of Linguist, which is an easy-to-use application for translation of your application user interface into many different languages.

Qt is available with almost all Linux distributions and can be installed using from your distribution’s package manager or from the Qt website. Lot of applications use Qt, including KDE, Opera, VLC, VirtualBox and Google Earth.

Pages: 1 2 3 4
  • Tell a Friend
  • Follow our Twitter to find out about all the latest Linux news, reviews, previews, interviews, features and a whole more.
    • Shawn

      You missed gtk-perl http://gtk2-perl.sourceforge.net/ in your list of GTK languages.

    • Golodh

      Well, there is a lot to be said for Linux as a development platform.

      Only I fear that the article contains rather too much boilerplate “hurrah” text to seriously address the issue.

      Starting with game development: seen any good games for Linux lately? Because I haven’t. It’s all consoles and MS Windows as regards attractive games. The Allegro environment despite.

      Then the IDE’s. Certainly KDE is an impressive achievement. Only … still not as polished and feature-rich as MS Visual whatever. The make side of things is still rough, and it’s still harder than it ought to be to point at a bunch of existing C files and say: “Ok, those files constitute my project compile, link and run ‘em”. It *can* be one, but it’s still not like click, click, done. And then the KDE integrated debugger. Compared to the inevitable MS offering it’s simply not as good. KDevelop still smacks a little too much like “Gee, we can do this too” to me. Even after its long development history.

      Fortunately KDevelop is getting competition from Qt develop. Which is a lot smaller, more focused, and easier to integrate GUI development in. And it runs both under Linux and MS Windows.

      Valgrind on the other hand is not mentioned, but it’s great, about on par with Rational Purify, but not quite as easy to use.

      Qmake and Cmake are a welcome relief from the arcane and painful to write automake / make scripts. But they haven’t been universally adopted.

      Netbeans is fine, but it’s not Linux-specific and it owes nothing to Linux.

      And then the gushing piece about the audio libraries. It’s great that they are there. They’re needed. But I’m sorry: but the mere fact that they rate a mention at all highlights the problem: their existence is not something that’s taken for granted. And anyway we’re looking at two offerings, not a single one. Despite the popular opinion that “choice is good”, this applies only during the R&D phase of a system. When you merely use a system as a vehicle to run applications on, choice isn’t automatically good because it fragments the market and dilutes your efforts. What you want is the best; all the rest can drop into the bit bucket. But how to determine the best? What you’d really want is one single thing that is best in every respect. But such thingies are hard to make.

      But then that gushing piece about the Gimp. Sorry, but fine a piece of software as it is, it’s not Linux-specific although its roots are in Linux. It runs fine on Linux, but it runs just as well on MS Windows. And that’s where it competes with programs like Photoshop, which it still hasn’t quite matched yet.

      When we come to the interface libraries, Qt deservedly gains pride of place. I really have no criticism there. Its great, it’s fast, it’s modular, it’s clean, it’s portable, and it even looks great. Only its development is carried by a commercial company, not by volunteers. Perhaps that’s why it pays so much attention to polish rather than piling up the features (unlike other projects I could mention).

      Oh yes, there is that wx stuff too. Sorry, but I never bothered with it. Here too I just want one library: the best. Anything else can go straight to the eternal bitfields. And as an end-user I’d like it to be standardised too. Away with hose annoyingly different file-open dialogues please. If it were a straightforward C library then I could understand its attraction, but it’s a C++ thing, just like Qt.

      OpenGl is great, but I never used it. I don’t program 3D stuff from scratch. If I need something done I’ll go straight to simple-to-use widget sets like Qt or I use a plotting package to do it for me.

      So please lets try to keep a perspective. Linux has developed into a platform one can be proud of, and a worthy challenger to MS Windows. Only … it still isn’t there yet. It still needs more polish and more end-user friendliness. It’s certainly getting there, but “turbo-charged development environment”? Lets keep some modesty in our claims, shall we?

    • Michael

      Now if only Linux could get a good modern text editor….. (emacs, vi, vim, pico, nano, kate, nedit, eclipse, gedit, anjuta, and joe don’t count for me… each is incomplete or a PITA to use) I’m tired of having to run Boxer under WINE to get the type of text editor I want. At least I found Kdbg which is worlds better than the extremely annoying ddd.

    • Boris

      Wow,

      You go in lengths to favor Linux. There are many reasons to stay away from Linux as development machine. I use both Linux and Windows.

      Many tools are not available for Linux. Gimp is almost totally useless and i don’t think there is a serious user base for it. No surprise Ubuntu has dumped it. Ppl who do serious (also open source) graphics work, don’t use it. Period.

      Why are even open source tools not supporting Linux well? Compare for example MySQL tools (Query, Administrator). It has a Linux and a Windows version, but the Windows version is way better. The details are the small usability things. They are not there in the Linux version.
      With many Linux tools you have this usability lag. For example graphical SVN support for Windows is far superior. On Linux you’d better just use command line subversion.

      Windows versions also tend to be more stable for most tools. I often see applications crash on my Linux box. Rarely they do that on Windows.

      Eclipse on Linux is so bad that it actually pushed me to move away from Eclipse after many years of use. I tried to use IntelliJ but only their Windows downloadlink works currently. So, in Windows Eclipse, NetBeans and IntelliJ work out of the box, in Linux only NetBeans works. Of course you can fix it, but it is always nice when mature software work just like that.

      On the server side of development Linux is King however. See the integration of Hudson in many distributions. Or the many other server side stuff. It is safe to say that when you need a graphical user interface, with Linux you step 20 years back.

    • Harry D

      @Boris & @Golodh

      Do you guys really think Windows is the better development environment than Linux, so I have a simple question for you, why Android (Linux) is popular where Windows mobile actually going to disappear.

      Linux is actually the home of many projects, without Linux these products would simply not possible. Here are few highlights to clarify. You will understand it you just have look beyond Windows;

      1. GCC (GNU Compiler Collection): This is project is used making software not just for linux but also for a diverse range of platforms from iPhone applications to Playstaion 3 games. Windows has Visual Studio, I have not seen them getting used anywhere apart from Microsoft platforms. Now you may say that GCC is available on Windows, but remember this Linux packages are designed to portable unlike Windows where you cant run ensure that your software even run on all Windows. Eg. DirectX 10/11 doesnt work on XP. Windows Mobile 5 cannot use Exchange 2007. Countless examples. Not to mention the Closed source nature of things. That is the reason Why Google and many other companies use Linux and not windows.

      2. Firefox aka Mozilla aka Netscape : This project was originated on Linux and later ported on different platform. Even today if you try to compile Firefox you will come to learn that it is not possible without using GNU utilities which were originally created for Linux.

      3. libxml, libiconv, zlib and many other common libraries: These libraries were created on Linux on now powers almost every system that is not windows. Exception is projects ported from Windows.

      4. Qt: Qt was never existed if it was not for KDE. So dont say it was just originated. Qt was a solid product for linux from day one. Go look at KDE 1 screen shots. Windows port was improved incrementally. Thank Qt developers (who are actually linux developers first) for Windows support.

      You guys mentioned yourself as end users, so you wont get it anyway. This is meant for developers. So as end user you need not to look at this period.

      SVN was created for Linux. It was made easier on Windows because the Windows users are retard. Linux users dont care for a good UI and we are dam well happy with it.

    • Boris

      Harry,

      Some good points you make. It would be indeed a significant victory of Android to bury the already dead Windows Mobile.

      But as me being a retarded Windows user, could you perhaps point me to the Linux kernel SVN repository?

    • Harry D

      Here is the thing. Linux is more than just kernel and several linux components use SVN. Linux Kernel is using GIT, again originated on Linux only. So no harm there.

      I apologize for using retarded.It should not be used in discussions like this.

      My point was, Windows from Top to Bottom was designed to be use friendly. Linux on the other hand was designed to be powerful, portable and open. Anybody can make software for Linux without paying and yet have access to complete source code to build on his knowledge aka build software that do not re invent the wheel. So user friendliness in Linux vary. People build software to solve kind of itch. Sometimes this itch is user friendliness itself (read KDE or Ubuntu).

      Windows on the other hand is a different game. One company dictates the term. You do not have access without money. You do not have the complete source code. If you build something using Microsoft’s library and for some reason it is unsupported in next release you are stuck. You do not have the access to library code. That is Vendor lock and it sucks big time. Thats why corporations and specially governments what to get out of the Microsoft’s proprietary jail

    • Arkadi

      I like Linux very much, but I like user friendliness too and thats why I have chose to use Ubuntu. I know that even Ubuntu is still not user friendly us Windows yet but I hope that all the open source community would help her getting there.
      To Boris: if you use the latest Ubuntu, Installing a new software as eclipse is very easy, you click on “Ubuntu Software Center”, search and install it.

    • http://www.twitter.com/cbemerine cbemerine

      Great list and points Harry D.

      @Golodh and @Boris, the title of the article is not “Windows – A supercharged development environment” is it.

      Too many times in the past I (and many of you) have allowed another proprietary company (including Microsoft) to lead me down a blind alley, only to have them discontinue support for the tools. And their only reason for doing so, over 90% of the time, is to force developers to pay more money for the upgraded/new development tools. Just so they can discontinue support and force you to pay again… and again… and again… and again.

      You know what they say about people who continue the same behavior while expecting a different outcome!

      You do not have to be a rocket scientist to want to get off that, financially negative to you, roller coaster/ferris wheel that only perpetually costs you more and more of your hard earned money. And these days, with so many jobs being shipped to India so a foreign company can replicate and steal your product and your market, it is even more critical.

      I will not even get into the time wasted to learn the new gotchas and additional problems with the new development environment and tools.

      Since their (proprietary company) choice is clear, yours (intelligent developer) should be also. Just say no and move into a more effective development environment. It will certainly save you time and time is money, right? Right. And that is more productive.

      As for Windows being the premier gaming platform, sadly true…however imagine a gaming platform where your operating system will run in only 128K, 256K or 512K of RAM Memory and you had the rest of the memory (Gigabytes today) to run/render the game?

      Linux is that platform.

      How many times do you have to buy a new Xbox or buy that proprietary operating system again for the same hardware (minus 2/3 minimal hardware changes) before you will wise up?

      Perhaps you want to pay them monthly or they turn you off, like your Cable TV, Internet provided or Cellular phone provider? Well you are in luck, as it would happen, this is what they want to force you into as well.

      As for me (and many, many others) I choose to own my hardware, own my software and have 100% control over LAN, my WAN, my development environment and my Personal Computers in general.

      I will upgrade ONLY when I deem necessary and not be interrupted only because some proprietary company wants more of my hard earned money. Duh moment that one.

      In Summary, the title of the article was “Linux – A supercharged development environment”. It is a great article!

    • Golodh

      @chemerine,

      I don’t quite get what you want to say with that comment on “what the title of the article is”.

      Boris and I point out ways in which Linux really isn’t a great development platform (especially compared to MS Windows), with the aim of getting the hype back on the ground. In that sense our comments are on-target.

      Next, your (to some extent justifiable) gripes about having to pay for development software have no bearing whatsoever on their quality, and therefore have no bearing on the article either.

      Last but not least, your (laudable) support for Linux as a free environment has precisely nothing to do with the question of whether it’s a *good* development environment, Ok? An in many ways it (still) isn’t.

    • Andaluz

      I’m working both on Windows and Linux. The problem is, when comparing Windows with Linux, it’s like comparing apples with pears. For example, Windows is commercial and developed with payed professionals. While Linux is opensource and developed by volunteers (and professionals from commercial companies too).

      As someone else mentioned before, Linux is built with stability, security and opensource in mind. While Windows was built from userfriendly point of view. So you can’t compare these OS together, it would be more fair to compare Windows with Mac.

      Now as time changes, Linux also changes and this means Linux is getting step by step more userfriendly, but it’s not there yet. Ubuntu is doing a good job, in such that it can be used by at least an average Windows users. Furthermore, there are different combinations that influence the success of an graphical OS. Like supported drivers (for audio, video etc..), Skype (which is just currently supported by Linux), flash for watching videos… All these important stuff can make a graphical OS successful or not.

      Visual Studio as an IDE is much better than Linux alternatives. As a C/C++/C# developer I debug a lot and the debug tools of MS is amazing. While using gdb or ddd is a real pain and frustrations I can’t get used to. But on the other hand, GIT is so great, there is no such cool SCM for Windows (ofcourse there is a port for that, but still). And working with COM objects on Windows is a straight disaster (no wonder they dropped it).

      Anyway, it’s also a matter of taste, I like Linux, because it’s built by developers for developers :) But on the other hand, if you want something that just works as a simple user, like watching movies or listening to music, I think Windows or Mac is much better for now…