Page 172 -
P. 172
171
Q4-5 What Are the Differences Between Native and Web Applications?
With open source, anyone can obtain the source code from the open source project’s Web
site. Programmers alter or add to this code depending on their interests and goals. In most cases,
programmers can incorporate code they find into their own projects. They may be able to resell
those projects depending on the type of license agreement the project uses.
Open source succeeds because of collaboration. A programmer examines the source code and
identifies a need or project that seems interesting. He or she then creates a new feature, redesigns
or reprograms an existing feature, or fixes a known problem. That code is then sent to others in the
open source project who evaluate the quality and merits of the work and add it to the product, if
appropriate.
Typically, there is a lot of give and take. Or, as described in Chapter 2, there are many cycles of
iteration and feedback. Because of this iteration, a well-managed project with strong peer reviews
can result in very high quality code, like that in Linux.
So, Is Open Source Viable?
The answer depends on to whom and for what. Open source has certainly become legitimate.
According to The Economist, “It is now generally accepted that the future will involve a blend of
26
both proprietary and open-source software.” During your career, open source will likely take a
greater and greater role in software. However, whether open source works for a particular situ-
ation depends on the requirements and constraints of that situation. You will learn more about
matching requirements and programs in Chapter 12.
In some cases, companies choose open source software because it is “free.” It turns out that this
advantage may be less important than you’d think because in many cases support and operational
costs swamp the initial licensing fee.
Q4-5 What Are the Differences Between Native
and Web Applications?
Applications can be categorized as native applications that run on just one operating system or
Web applications that run in browsers. In the latter case, the browser provides a more or less con-
sistent environment for the application; the peculiarities of operating systems and hardware are
handled by the browser’s code and hidden from the Web application.
Figure 4-17 contrasts native and Web applications on their important characteristics. Consider
the Native Applications column first.
Developing Native Applications
Native applications are developed using serious, heavy-duty, professional programming lan-
guages. Mac OS and iOS applications are constructed using Objective-C or the Swift pro-
gramming language. Linux (Android) applications are constructed using Java, and Windows
applications are constructed using C#, VB.NET, C++, and others. All of these languages are
object-oriented, which means they can be used to create difficult, complex applications and,
if used properly, will result in high-performance code that is easy to alter when requirements
change. The particular characteristics of object-oriented languages are beyond the scope of
this text.
Object-oriented languages can be used only by professional programmers who have devoted
years to learning object-oriented design and coding skills. Typically, such developers were com-
puter science majors in college.
The benefit of such languages is that they give programmers close control over the assets of
the computing device and enable the creation of sophisticated and complex user interfaces. If
the programs are well written, they perform fast and use memory efficiently. The limits on native