Sun Technolgies

Sun Technologies

dwhA leading maker of UNIX-based servers used to power corporate computer networks and Web sites, it also makes workstation computers and disk- and tape-based storage systems. Sun's computers utilize the company's own chips (SPARC microprocessors) and operating system (Solaris). Its software portfolio includes application server, database management, office productivity, and network management applications. The company also developed Java, a cross-platform programming language used to create applications for computers, Web browsers, mobile phones, and other consumer electronic devices. Sun Micro was acquired in 2010 by Oracle for about $7.4 billion in cash.

Basic Certifications

Sun Certified Java Programmer (SCJP)

Exam is the entry level Java exam and is a prerequisite to a number of the other Java-related certifications.

It is designed as a fairly detailed test of basic knowledge of the essentials of the Java programming language. It tests looping constructs and variables, and does not cover specific technologies such as GUI creation, Web or network programming. The exam tests how well a programmer has understood the language constructs and not the programmer's capability to write efficient algorithms.

It is assessed through an automatically administered multiple-choice test system and consists of 60 questions which the candidate has 180 minutes to answer. At least 35 questions are needed to be correct to pass (around 58%). The SCJP 6 exam tests a candidate on knowledge of declarations, access control, object orientation, assignments, operators, flow control, assertions, string handling, I/O, parsing, formatting, generics, collections, inner classes, threads and the JDK tools.

Sun Certified Java Developer (SCJD)

Sun Certified Java Developer (or SCJD) is the advanced Java programmer certification level. Unlike the easier SCJP, this level is intended to verify that the participant is able to write a real-world commercial application, solving all typical problems. It is the highest qualification that Sun confirms for the Standard Edition Java programmer. Prior to attempting certification, candidates must be certified as a Sun Certified Programmer (SCJP), any edition. It is not necessary to be a Sun Certified Java Associate prior to taking this exam. The total cost of the exam is around $575.

The certification consists of the practical programming task and the subsequent written theory exam. The participant must write the described application, extensively using custom file formats, distributed computing (JRMP) and advanced Swing features that are not fully accessible from the popular rapid development tools (JTable, component data models and so on). The code must be documented, and the user manual must be supplied. The task itself is written in the form of a PRD for a non-programming end user. Apart from one or two interfaces, no technical details are given.

Advanced Certifications

Sun Certified Web Component Developer (SCWCD)

The Sun Certified Web Component Developer (SCWCD) certification targets information regarding Java components related to web-applications, specifically Servlets and Java Server Pages (JSPs).

Sun Certified Business Component Developer (SCBCD)

The Sun Certified Business Component Developer (SCBCD) certification targets information regarding Java components related to distributed applications, specifically Enterprise Java Beans (EJBs). To achieve this certification, the candidate must pass a computer-based test available world-wide at Prometric test centers.

Sun Certified Developer for Java Web Services (SCDJWS)

The Sun Certified Developer for Java Web Services 5 (SCDJWS) certification exam is for developers who have been creating web services applications using Java technology components such as those supported by the Java Web Services Developer Pack, JAX-WS and JAXB. Other topics like XML, JSON, REST and security are covered too.

Sun Certified Mobile Application Developer (SCMAD)

The Sun Certified Mobile Application Developer (SCMAD) certification targets information related to developing Mobile applications, through platform Java 2 Micro Edition (J2ME). It focuses in specifications like JTWI, CLDC, MIDP, WMA and MMAPI. SCMAD Exam Guide is the only book that focuses on the exam objectives.

An important point of the Android platform is that handset manufacturers and wireless operators can provide suitable versions of Android for their products and services. This characteristic directly impacts on lower cost and innovative products. Therefore, Android can be considered a new and potential option for mobile platforms for smart phones.

On the other hand, Qt has been considered a powerful component in this newest mobile programming arena. Qt is most notably used in Desktop applications, such as KDE, Opera, Skype and VirtualBox, but recently it has been ported to Nokia mobile platforms, such as S60 and Maemo. Initially developed by Trolltech since 1991, Qt is released with two different licenses (open source and commercial), which should make Qt more suitable for non-GPL open source projects and for commercial users. In June 2008, Nokia acquired Trolltech to enable the acceleration of cross-platform software strategy for mobile devices and desktop applications. On September 29, 2008 Nokia renamed Trolltech to Qt.

This article provides information that guides development to port Android applications to Qt for Symbian.

Overview of Android Platform

Android applications are developed with the Java programming language (Dalvik virtual machine), and device services, such as touchscreen and storage features, can be accessed through the Google services API. It is possible to run applications written in C or any other language, but the applications have to be compiled to native code and run; this development path is not officially supported by Google.

Since October 2008, Android has been available as an open source project (Apache License). Handset manufacturers and wireless operators are free do add closed and proprietary extensions to their products.

Although Android is based on a Linux kernel, according to Google, it is not a Linux operating system. In addition, it does not have a native windowing system, nor does it support the full set of standard Linux libraries, including the GNU C Library. This characteristic make it difficult to reuse existing Linux applications or libraries. Android does not use standard Java APIs, such as J2SE and J2ME. This prevents compatibility between Java applications written for those platforms and those for the Android platform. Android only reuses the Java language syntax, but does not provide the full-class libraries and APIs bundled with J2SE or J2ME.

The system has access to mobile phone resources through system drivers, such as camera, display, WiFi and keypad drivers. Then, the next layer consists of libraries and the runtime system of Android. Finally, Android provides a set of libraries (Application Framework) so it is possible to extend them and create new applications.

Android makes it possible to reuse components of other applications. For example, if you need to reuse a component that provides a suitable scroller and made it available to others, you can invoke such a component to do the work for you. Therefore, the system has been designed to start an application process when any part of it is needed, and instantiate the Java objects for that part. Therefore, Android does not provide an entry point, such as main function, but essential components: activity, services, broadcast receives and content providers.

Activities represent screens on an Android application. From an activity, you can display buttons, labels, menus and much more. All activities subclass the android.app.Activity class. Services do not have visual appearance, but they run in the background. For example, a service may play music while the user performs other tasks. Each service extends the android.app.Service base class. Broadcast receives are components that receive and react to different broadcast announcements, for example, a message that the battery is low. All receivers extend the android.content.BroadcastReceive base class. A content provider is responsible for making an application's data available to other applications. Therefore with content providers, it is possible to share data between different applications. All content providers extend the android.content.ContentProvider base class.

The Android development environment consists of: the Android SDK, Android source code and, optionally, IDEs that help make programming Android applications a lot quicker. The Android software development kit (SDK) consists of libraries and tools, including an emulator to run applications. The Android SDK is available for Windows, Mac OS X, and Linux. There are different IDEs that provide support for Android development, such as Eclipse (with the Eclipse plug-in for Android).

Overview of Qt for Symbian

Qt applications are developed with C++ enhanced with additional extensions implemented by a pre-processor that generates standard C++ code before compilation. Qt also provides bindings for several other programming languages, like Python, Ruby and Perl.

Qt is notably used because of its GUI widgets, but also provides a set of non-GUI related features: SQL database access, XML parsing, thread management, network support and a unified cross-platform API for file handling. Qt has been successfully ported to the Nokia Symbian S60, Maemo, and MeeGo platforms. Qt for Symbian will “enable you to create advanced applications with innovative user experiences while getting to market quickly”. Compared with Android, Qt is an interesting and easy-to-use programming framework that certainly brings a considerable contribution to mobile programming as well as desktop application development.

Sun Certified Enterprise Architect (SCEA)

Sun Certified Enterprise Architect for the Java EE Platform (SCEA) certification certifies the skills of a software architect in the Edition Technology(formerly J2EE). Obtaining the certification requires the candidate to pass three individual stages:

  • a multiple choice exam on the basic concepts of Java EE technology
  • a UML design project involving Java EE technology
  • an essay exam regarding the design project