Linux-Based Application Development










PDF version of this report
You must have Adobe Acrobat reader to view, save, or print PDF files. The reader
is available for free
download
.

Linux-Based

Application Development

by Lynn Greiner

Docid: 00018391

Publication Date: 1711

Report Type: TUTORIAL

Preview

In the last few years, application development has
polarized into what almost amounts to two camps: Windows with
its .NET platform and the Linux-based
platform. Linux-based development is doing very well,
despite the Windows juggernaut, aided by comparatively low development costs and a huge pool
of available tools and talent. In fact, Windows and Linux often
now exist side-by-side in organizations, and developers
can now use Windows tools like Visual Studio to develop for Linux. This report looks at the
development options available under Linux and examines the
opportunities it offers.

Report Contents:

Executive Summary

[return to top
of this report]

Linux applications and development tools have become an
important part of many IT infrastructures.

Related
Faulkner Reports
Linux Development Tools Market
Trends

Linux-based applications run the
gamut from Web-based applications to desktop applications to n-Tier
server-based applications to embedded software. Applications developed for
Linux are also easily ported to other platforms such as Windows and
commercial versions of UNIX. Furthermore, many of the standard application
development tools used to develop Linux applications are commonly used to
develop applications for other platforms, including UNIX, Apple’s Mac OS
X (which is UNIX-based), Android, and Windows.

Linux is sometimes used by IT departments that
are under increasing pressure to deliver quality applications quickly and
within a tight budget. While it has been historically well suited
for Web-based applications and n-Tier applications, advances in
graphical operating environments, user interfaces, and desktop application
suites for Linux have also started to make it a viable alternative desktop
application platform. Mainstream vendors such as IBM and Novell (now
part of Micro Focus), and even Microsoft, have
ported their development environments to Linux to give their customers
both the benefits of open source and the safety net of an established
vendor.

Description

[return to top of this report]

IT departments undertaking any application development today need to
find a balance among many constraints, such as:

  • Time to market
  • Cost to develop
  • Total cost of ownership

Cost is frequently the most important factor in choosing
a software development platform, and a large piece of that cost is in
acquiring the tools necessary to do the job. That is where a Linux
platform shines.

The Linux platform extends beyond the core operating system and
includes other open source software including compilers, programming
languages, Web servers, relational database servers, graphical
environments, and development environments. In keeping with the Linux
tradition, most of these products are available for little or no cost and
are frequently re-distributable without fee. Most of these software
development tools can be used on other platforms such as Windows,
commercial UNIX systems, and Apple’s Mac OS X.

Programming Tools

Commonly used open source packages for application development include:

  • gcc – A compiler for C, C++, Java, and other programming languages.
  • emacs – A development environment for all forms of software.
  • Apache – The world’s most popular Web server.
  • MySQL – The world’s most popular open source relational database
    engine

  • Java – The Sun-developed popular cross-platform programming language,
    now owned by Oracle.

  • PostgreSQL – A very popular relational database engine.
  • Perl – A multipurpose programming language used for Web applications
    and general programming.

  • Python – An object oriented programming language used for many types
    of software development.

  • PHP – A popular programming language for developing Web applications,
    similar in many ways to Microsoft’s ASP technology.

Due to its similarities to commercial UNIX platforms, software
developed on Linux tends to run with little or no change when ported to
other UNIX environments. For certain classes of applications, particularly
Web-based applications developed with Apache, software developed
under Linux can run unchanged on the Windows platform. This is also true with
software developed using Java, Perl, Python, and PHP, where platform
differences between Linux and other platforms have been abstracted away.

For these reasons, Linux provides a full-featured, economical
application development platform. Where appropriate, that platform can be
extended through the rest of the software development infrastructure, into
platforms for staging and release.

The job of application development cannot be done without the basic
tools for creating software: compilers and interpreters. Here, Linux
excels, supporting all of the major languages and environments in use
today for creating software.

Compilers. At the lowest level are the C and C++ compilers.
Here, Linux developers use the gcc compiler suite. Current
versions of gcc support the latest versions of the C and C++ language
definitions including the C++ Standard Template Library. In fact, gcc was
the first compiler to support the most recent revision ISO C++.

Java. A significant amount of software today is
written using the Java language developed by Sun Microsystems, now owned
by Oracle. Linux is considered a first class platform for Java,
alongside Windows and Solaris. Oracle provides the basic tools for Java
development on Linux, as does IBM.

Apache. Many applications being developed today are Web-based,
or have some Web-based component associated with them. As such, the Web server has become a crucial part of the development toolset. Most
Web applications developed with Linux are developed with Apache, the world’s
most popular Web server.

Apache is a robust, cross-platform Web server. Applications that are
developed for Apache tend to run on many platforms
including Windows, Linux, Mac OS X, and Solaris. Here, the actual platform
used to develop software for Apache is not very important since Apache
installations are reasonably interchangeable.

For applications that deal with sensitive data, Apache can be
configured to support encrypted transactions using SSL. Such support can
be provided either directly from the core Apache package or through
commercial versions of Apache such as the Pivotal tc Server from Pivotal,
now part of Dell Technologies.

PHP and Web Applications. Although Linux does not support Web
development using Microsoft’s ASP technology, there are Linux-native
alternatives that are similar to ASP for developing Web applications. The
most popular is PHP, a language exclusively designed for Web development
on Linux, Windows, and other major platforms. Microsoft even has a group
dedicated to improving PHP performance under Windows and IIS, and offers
PHP support in IIS 7 and later. Microsoft also offers a cross-platform
code editor, Visual Studio Code, which runs on Windows, Mac OS X, or
Linux, and supports over 30 languages including PHP, Java, Python, Ruby,
and SQL.

Programs written in PHP are very portable and can be used in
conjunction with all major Web servers today. When paired with the popular
Apache Web server, PHP programs can be run in-process like ASP programs,
saving the overhead associated with CGI-based Web applications. Like ASP,
PHP offers support for using relational databases in conjunction with Web
applications.

Perl and Python. Two common languages used for software
development with Linux are Perl and Python. Both are general purpose
programming languages that can be used for Web-based application
development, n-Tier server development, and desktop software development.

Among the strengths behind the Perl language are the thousands of
modules and extensions for Perl that can be found on CPAN, the
Comprehensive Perl Archive Network. These modules provide interfaces to
relational databases, content management systems, application servers,
support for graphical application development, and much more.

Python offers a large number of extensions to the core environment as
well. Among the primary benefits to Python are its simple syntax, its ease
of use, and its embedibility and extensibility.

Both languages allow programs written
on Linux to be copied and run on other platforms such as Windows and
Solaris. Most Perl programs can be run without modification on other
platforms.

Perl and Apache together provide a rich environment for developing Web applications. An in-process Perl interpreter is available for Apache,
which allows Perl programs to respond to Web requests much more quickly
than standard CGI programs. Like PHP, this accelerated environment is
available with Apache on all platforms that Apache supports.

Ruby on
Rails.
Ruby on Rails (aka Rails) is a collection of templates that
complement the Ruby language. Its developers describe it thusly: "Rails is a full-stack, open-source web framework in Ruby for writing real-world applications with joy and less code than most frameworks spend doing XML sit-ups."
It has gathered considerable interest
because of its effect on productivity – some developers have achieved a
tenfold increase. Its guiding principles include "don’t
repeat yourself" and "convention over
configuration."

Databases. Most modern IT applications today deal with a database in some manner. To support development of database applications, IBM
has made its DB2 database server available for Linux free of charge for
non-commercial use. Similarly, Oracle released its Oracle 11g Express
Edition database server free of charge for non-commercial use, and CA
Technologies did the same for Ingres, and has since spun it off, still
open source, into a separate company, now known as Actian.
Actian recently combined Ingres with its Vector X-100
analytics engine in a product branded Actian-X. Typically,
developers will use these databases in development and possibly staging
configurations with Linux, and deploy live applications using commercial
UNIX platforms. Ingres, MySQL, and DB2 are available in the SUSE Studio
Gallery, as extensions to the toolkit for building VM-based
application appliances.

Although DB2, Actian-X, and Oracle 11g are available for Linux, other databases
tend to be more popular for Linux development. These include open source
databases like MySQL and PostgreSQL.

MySQL, a popular open source database engine, has a community edition
that is free for
non-commercial use on Linux and commercial UNIX platforms. Licenses for
commercial use and use on Windows are also available.
It was acquired by Sun Microsystems in February of 2008 and
ownership passed to Oracle on its acquisition of Sun. The goal
behind MySQL is to provide a fast, capable relational database engine
where speed is crucial, and data integrity is of a secondary concern.
Interestingly, this tradeoff is frequently worthwhile, especially with Web-based database applications and applications that are dominated by
read access with infrequent updates. Upcoming releases of MySQL are
expected to provide increased data integrity features for those
applications where integrity is more important than speed. The
current release offers enterprise-class features such as shared
procedures, triggers and a toolkit to help users migrate from commercial
databases, and version 5.6 of MySQL Enterprise offered commercial-grade
management tools, a new event scheduler, xpath support, partitioning and
row-based/hybrid replication, as well as an improved performance schema
for monitoring real-time performance, replication heatbeat, performance
enhancements, improved replication, and more. Version 5.7 adds recovery
improvements, general tablespaces, virtual columns (functional indexes for
JSON support), native partitioning, Full-Text Search pluggable parsers and
CJK support, data definition language (DDL) improvements, transparent page
compression, R-tree indexes (for GIS support), dynamic buffer pool resize
and better instrumentation via performance schema. In September 2014, Oracle
announced that it was extending its Oracle Enterprise Manager tool to to
include MySQL. It also announced new backup, audit, and enterprise
encryption tools for MySQL. Commercial support for MySQL
is available from Oracle. In April 2017, Oracle
announced high availability support, and in September 2017 it announced
enhancements including Unicode support and better mobile app support.

Another popular open source database is PostgreSQL, a full-featured
relational database that emphasizes data integrity over speed, making it
an effective middle ground between MySQL and commercial database engines.
Recent versions of PostgreSQL support advanced features, such as disaster
recovery, online backup, stored procedures, query optimization,
fault tolerance and data replication. PostgreSQL is also available free of charge
for both commercial and non-commercial use. Commercial support for
PostgreSQL is available from PostgreSQL, Inc. and others.

Microsoft has also gotten into the Linux database
game with SQL Server for Linux. Currently, packages are
available for Red Hat Enterprise Linux, Ubuntu, SUSE, and Docker. Microsoft has provided an extension for
Visual Studio Code for SQL Server developers.

IDEs. The typical mode of development under Linux involves
command line interaction between the programmer and the system. This is in
stark contrast to software development under Windows and Macintosh
platforms, where graphical integrated development environments are the
norm. Although command line interaction can be a very powerful paradigm,
many programmers new to Linux prefer the IDE approach.

The most widely used IDE for Linux is the GNU Emacs editor. Although
this environment is primarily text based, it has been customized over a
period of decades to simplify software development in virtually every
programming language and environment in use today. Emacs
was available in
two main “flavors” – Emacs and XEmacs. The differences between the two
software packages were mainly philosophical, as they
were almost completely interoperable. Both Emacs and XEmacs
were available with graphical
extensions to support users who are more comfortable using windows, menus
and mice instead of the traditional keyboard interface Emacs offers.
However, in December 2015, the XEmacs maintainer put the project into
maintenance mode after a decline in developer support, and as of August
2016, the project’s website is no longer active.

For developers who are more comfortable with traditional graphical IDEs, a wide range of options exists. The
two most mature choices at the
moment are KDevelop and Eclipse. KDevelop is an IDE that is
developed and maintained by the KDE project. Eclipse is a general purpose IDE that currently supports
Java development projects. A third option, Kylix, was a commercial IDE
developed by Borland that was quite similar to its Delphi and C++ Builder
environments, however, Borland ceased development of the product
and has since completely retired it. In January 2008, it sold
its development tools company, CodeGear, which
offered Turbo JBuilder, a free, Eclipse-based version of JBuilder,
as well as a set of commercial IDEs, to Embarcadero which
rolled the tools into its product line. However, it has since discontinued
them entirely. 

As a KDE project, KDevelop supports the languages and tools used with
KDE. For C and C++ programmers, KDevelop offers a very robust environment,
and it is especially tuned for developing KDE applications. Standard
features include project files and integrated help. KDevelop can
be used for a wide variety of programming projects, and is not designed to
be used to develop KDE applications exclusively.

The Eclipse Foundation describes its Eclipse IDE as a “universal platform." It is written
in Java, and runs on all major platforms, including Linux. Eclipse is
built on a component architecture that allows new languages and
environments to be added in to support new paradigms. The primary focus
is currently on support for Java projects, although the intention is to
encourage plugins to support other kinds of software development (e.g. C,
C++, HTML, XML, etc.). The long term goal is to build a platform around
Eclipse so that vendors and software projects can build on a strong,
industry standard IDE instead of constantly re-inventing basic IDE
technology to support a new product or feature. Current
offerings include AspectJ, IDEs for C/C++, Java and Java EE, and PHP.

In a move that startled the industry, Microsoft has
made
several forays into the Linux development arena. As well as establishing a
team working on PHP for Windows, in November 2009 it purchased TeamPrise
from SourceGear. TeamPrise, now known as Visual Studio Team Explorer
Everywhere for TFS, lets developers using Eclipse and working on
non-Microsoft operating systems build applications with Visual Studio 2010
and higher.
In November 2014, it went a step farther, announcing that its .NET
framework and tools would be released to open source and expanded to
other platforms.
Since then it has released Visual Studio Code, a cross-platform editor for
over 30 languages.

With Microsoft’s approval, Novell released Mono Tools for Visual
Studio, a plug-in that lets developers build, debug, test and port
applications built in C# under Visual Studio 2005 to Linux, Unix and Mac
OS X. It targeted Windows developers who wanted to build .NET applications,
build appliances and create cloud images using Mono. An update enabled the
plug-in for Visual Studio 2008, and it continued to be offered through
SUSE and as a commercial product. Mono Tools for Visual Studio, now known
as Xamarin, included a debugging
engine, integration with Visual Studio pull-down menus, and
out-of-the box integration with SUSE Studio Online, a service that lets you roll your own Linux distro by wrapping up
packages, database, files and configuration for use on things
like appliances. Xamarin now focuses on development for mobile iOS and
Android apps. It was acquired by Microsoft in February 2016,
and has since been rolled into all editions of Visual Studio, including the free
Community Edition.

Current View

[return to top of this report]

Over the last decade, Linux has matured from an interesting oddity to a
full-fledged platform that is capable of supporting enterprise
applications and is the driving force for the cloud. Linux supports a complete array of hardware, ranging from
PDAs, smartphones and embedded systems to multiprocessor servers, mainframes and
network clusters, as well as old yet capable hardware such as
original Pentium-based computers, which often provide adequate computing
power for specialized applications.

IT projects have also matured. At
one time, software development typically occurred in an ad-hoc manner, using whatever tools and
computers were in place or available, without documented expectations for
application usability and lifespan. The modern IT project
is more disciplined, with much more emphasis being placed on
reliability, support of enterprise goals, usability,
security, recoverability, and the total cost of ownership
(TCO) over the
expected life of a project.

Similarities between Linux and other environments, such as Windows and
commercial UNIX platforms, allow developers to work more effectively at
the task of development. This enables developers to work on fast,
inexpensive computer resources during the development phase of a project,
and still target a wide range of platforms for deployment of IT
applications. It is quite possible to replace servers costing $25,000 to
$100,000 or more with commodity Linux servers costing $5,000 or less.
While the commodity hardware may not be equivalent to its more expensive
cousins, a workable solution can be built using a network of Linux servers
to replace a single proprietary server, or by putting
Linux applications on cloud-based servers. Microsoft says that over
one-third of the instances on its Azure cloud service now run Linux.

Developers have also changed. The open source
community used to be small, and included very few enterprise developers. Now
there is a critical mass in the marketplace who have the skills to develop
with open source tools, and Linux development is being taught in
schools. With the advent of Linux development tools in
Microsoft Visual Studio, even Windows developers can now develop for
Linux.

Outlook

[return to top of this report]

With support for a full suite of development tools, Linux is an ideal
platform for application development, especially for Web-based and
n-tier IT applications. Indeed, Linux as a platform is strong enough to
work alongside or replace existing development platforms. In
some cases, Linux can also be used to replace expensive systems in use for
staging and testing, or even production systems. It also lends
itself well to virtualization, and is pervasive in the
cloud.

Linux lowers cost to develop because it is available
without expensive and restrictive licensing fees. It, and many of the
associated tools, are available for
free via the Internet, or at a modest charge through a number of
distribution channels. Savings multiply once the entire scope of an
application development project is considered: no licensing fees are
needed for the many computers used for development, staging, and production
when Linux is used. 

Support is available from a number of
different sources, from small local consulting firms to firms that specialize in
Linux like Red Hat and SUSE (now part of Micro Focus), to large global organizations like IBM and Hewlett Packard Enterprise. While Linux may have been
a risky and unsupported proposition a few years ago, that is certainly
not the case today. Linux is now firmly established as a mainstream
platform; Microsoft’s steps to support Linux development and
integration with its platforms prove the
point.

Recommendations

[return to top of this report]

IT organizations should consider incorporating Linux as a supported
development platform for new application development projects. Thanks to reduced
hardware and software acquisition cost, lower TCO, and access to a wide
variety of free software tools for Linux-based and cross-platform
development, the economics are compelling.

The operating system is well-supported by mainstream vendors, and
experienced developers are now available to contribute to the success of
projects. No more does the enterprise have to depend on hobbyist
programmers for open source systems; instead, programmers schooled in
proper development methodologies now have the skills to work effectively
in open source languages and tools, and Microsoft’s
release of its familiar tools for Linux adds to the available developer
pool. This makes the platform more
acceptable in corporate realms, where the business may live or die on its
IT systems.

Linux
can reduce TCO by replacing more expensive systems in
the development, testing, and production phases of a project with cheaper
commodity boxes or cloud-based instances.
Alternatively, Linux-based systems can be used to replace some of the less-critical
hardware resources in development and staging, while the more critical
production resources continue to use high-performance proprietary hardware.
Linux can also be run on virtual machines, and already
runs a large proportion of cloud-based services.
All of the Top 500 supercomputers currently run Linux.

Not only does Linux work well with less expensive commodity
hardware, but developing and deploying applications on Linux avoids
many of the software licensing fees typically required in a
software project. Linux runs a wide variety of software, much of it
released as open source or free software. These packages support the same
kinds of application development methodologies that run on commercial operating
systems, and many of them are available for free or at low cost.
Microsoft has even released a free version of Visual
Studio. In addition, many
of the free tools are available with commercial
support contracts, just like their proprietary counterparts,
making them more acceptable to the enterprise.

Adopting Linux more widely in an organization has other advantages.
The low cost of acquisition of Linux-based systems permits the use of different platforms for the development, staging and production phases of
software development projects. Adopting Linux as a development platform may allow software development
and testing to commence prior to the acquisition and installation of
production computing capacity.

While it is possible to develop cross-platform desktop applications
using Linux as a development platform, most organizations find it easier
to develop Windows applications natively using the Windows operating
system. Organizations that are considering deploying Linux as a
supported desktop environment across the enterprise should strongly
consider developing native Linux applications using a desktop
environment such as KDE. In such scenarios, the added overhead of
cross-platform development is not an issue.

Linux-based application development today is much less risky than it
would have been a decade ago. If the skills
exist in a corporation, they should be put to work. If they don’t exist,
it’s time to build or buy them, and begin to explore ways Linux can fit
into the infrastructure.

[return to top of this report]

About the Author

[return to top of this report]

Lynn Greiner is Vice President, Technical Services for a division
of a multi-national corporation, and an award-winning computer
industry journalist. She is a regular contributing author to Faulkner
Information Services.

[return to top of this report]