Learn English from the Masters
Those who are well versed with Java programming, will vouch for it truly being one of the most versatile languages out there. There exists almost no programming problem that you cannot solve using Java. Today it is omnipresent. Programs written in Java get employed as Application Servers, Desktop Applications, both as Website Back-ends and front-ends as servlets and applets, respectively, and more recently, even as mobile apps, on Android.
Java was born for the Web, and almost single-handedly revolutionized it. However, the history of Java technology article, on Oracle's website, reports, that the so called “Green Team” at Sun Microsystems, led by James Gosling, originally developed Java with a vision of bringing computation and the power of internet to consumer devices. They demonstrated their new language with an interactive, hand-held home-entertainment controller, targeted for the digital cable television industry. Unfortunately, the concept was much too advanced for the time. But it was just right for the Internet, which was just starting to take off. In 1995, the team announced that the Netscape Navigator Internet browser would incorporate Java technology, and the rest is history.
Java, as a web backend, has also matured immensely since its inception. Apart from servlets, Java Enterprise Edition (EE) offers a host of built-in tools and templates for developing complex, reliable, scalable, enterprise-level, web architectures. With the growing popularity of web-centric languages like PHP, Perl, a few years ago, people predicted the demise of server-side Java. But, that has not been the case. Java, has remained as strong, if not grown stronger. No surprise that Google App Engine, the offering which allows users the ability to build and host web applications on Google's infrastructure, offers support for only Java, apart from Python.
Java, was marketed by Sun, as “Write once, run anywhere”. This means that the Java applications written for any platform, can run on another platform, if the same version of Java is available on both of them. This is a key feature of Java, which is made possible by the presence of a Java Virtual Machine (JVM). Compiled Java applications are actually machine opcodes, meant to be interpreted by a JVM. Thus the JVM forms a kind of abstraction layer between Java apps and the actual hardware processor. Presence of the same JVM, even on two totally different, unrelated platforms, allows a Java application to run in a similar fashion on both of them.
The JVM approach also implicitly enhances application security. Since, Java applications run inside a JVM, they exist in a sort of secure sandbox, from where they cannot see and thus cannot do any harm to the host system: it cannot install a virus, or read/write files from the hard drive, without the user explicitly allowing it. Because of this security promise that Java makes, it is highly rated for creating enterprise-level applications.
Presence of this intermediate JVM, also creates its own share of problems, though. It obviously adds processing overheads and you can often find people complaining of Java apps running 'slow'. However, that is a thing of the past. Today, Intel and AMD processors have built-in hardware accelerators for Java. Together with that JVMs have seen lots of optimization over the years. Today, Java apps run as fast as native apps.
It was believed that Java would never be well-suited for developing mobile embedded applications. Java was deemed too costly for devices with limited computational power and battery life. Several attempts, with Java ME, and others had fizzled out. But it took Android to show that Java could indeed conquer that frontier too. Android, with its optimized Dalvik VM and other enhancements, made Java the language of choice for developing applications and reignited the interest in Java for embedded programming.
Simply, put, Java is here to stay. With its object oriented philosophy and meticulously documented APIs, it fosters reusable, clean and structured programming. Today, Java is one of the most mature, most widely used programming languages, supported by a huge community of developers worldwide. Maybe if tomorrow, NASA allows users to deploy applications on its satellites, they will most possibly need to be written in Java.
Android needs no introduction. Today it stands as the most popular smart phone platform and continues to add new admirers every day. Maybe more than half the people reading this article today would be in possession of an Android device. And to think of it, the first Android device was only launched just three and half years back, in October, 2008. Quite, a revolution.
The first version of the Android mobile phone development platform, complete with an Operating System, application framework and built-in applications, was released in Nov, 2007. The rights to Android rested with the newly formed Open Handset Alliance: A consortium of mobile handset makers, application developers, mobile service providers, chip manufacturers, with the goal to collectively define and develop Open Standards for Mobile Devices. Android was released as a completely open-source, royalty-free platform. It allowed anyone to pick up the Android code and develop their own products based on it, without paying even a penny.
At the beginning of 2010, only 3% of the smart phone users had Android devices. However, by the end of 2010, Android commanded the biggest market share among smart phones, although marginally above the iPhone. By the end of the first quarter in 2011, Android had increased that gap by more than 10%, a trend which has continued ever since.
The real power of today’s smart phone platforms, like Android, lies in their ability to extend themselves through applications. Installable applications give a user complete freedom to customize their devices. More interestingly, they free device manufacturers from worrying about pre-loading applications into their devices. This flexibility has been the most important factor that has helped transform mobile embedded devices into true General purpose computing platforms, quite like our Personal Computers.
As a result of this app revolution, the Android App development industry has see a huge boom. Today, there are more than 4,30,000 applications available on the Android Application Market, for users to choose from. The possibilities for what mobile applications can do are endless and this is only the beginning of the mobile application industry. The demand and popularity for mobile applications are rising every day, with new app requests flooding every development firm. It is safe to say, that the craze for mobile applications does not seem to be dying down anytime soon.
As long as there are incoming requests for new applications, mobile application developers and smartphone app development firms will remain active and busy developing mobile applications for all types of users. Together with that, there are always requirements of porting older Apps to new platforms, which is a huge business in itself, considering the number of new devices being added to the Android Ecosystem, almost on a daily basis. Interestingly, today, even regular corporate companies are looking for app developers in android so that they can leverage their business ideas on this latest technology.
Developing Android applications requires skills similar to Java software development for the PC market, albeit, with an embedded spin on it. Anyone can develop Android Applications using the free Android Software Development Kit. Learning Android Application development is not only a sure shot way towards employment, but also a fun and indulgent activity. You could design applications as per your own personal requirements, just as a hobby. All you need is an Android phone to load it on, and some friends to boast about it to.
And soon it will not just be mobile phones. The Android platform is already making forays into other areas, like consumer electronic gadgets and other similar sorts of things. With its royalty-free, but mature nature, Android is bound to find more and more deployments. Maybe soon there will be so much Android powered devices in our day to day life, that Android Application Development would be taught in primary schools. Surely, you would like to get a head-start, wont you?
The pioneering and pithy Intel Inside campaign was hugely successful in letting people know that Intel chips power computers. Not only did this raise awareness about the role of integrated circuits in electronic devices, but for arguably the first time in the history of product branding, made a component or ingredient as significant as the whole product itself. But did you know that chips designed by companies like AMD, Nvidia, TI, Qualcomm, Broadcom, ST, Cypress, Samsung, Freescale and NXP are also inside computers, communications devices (cellphones etc.) and infrastructure (base stations, routers etc.), consumer durables (TV, microwave etc.), automotive (power steering, airbag deployment, sensors etc.) and transport vehicles (aircraft control etc.)? In fact, one can safely state that any electronic application in any product must comprise at least one integrated circuit performing core operations.
Thanks, once again, to the Intel Inside campaign, most of us are familiar with the term 'processor' - the heart and brain of an electronic circuit. However, modern integrated circuits are more than just the processor. They typically include helper circuits (termed peripherals), hardware accelerators (function-specific processors), memories (to store data) and analog circuits that do much more than digital logical and mathematical computations. Modern chips are complete systems in themselves, performing very complex functions (if you find it difficult accepting this statement, just think about all that your computer and cellphone can do!). Integrated circuits are the de facto building blocks of modern electronic systems since they offer miniaturization at very low manufacturing costs.
In general, there is always more than one way to design a digital integrated circuit (with the exception of memories) to achieve a given functionality. The choice of design methodology is guided by cost, design turnaround time (cycle time) and circuit efficiency (area, speed and power) criteria. Further, developing complex circuits requires time and skill. Thankfully, a bulk of the development process is automated and handled by specialized software called Electronic Design Automation (EDA) software. Modern day EDA software capabilities, availability of requisitely skilled design personnel and benefits relating to the criteria mentioned above tend to shift design methodology preferences towards a particular style of design, commonly known as synthesizable.
Synthesizable digital design begins with a functional circuit description (called RTL) implemented in a programming language, called Hardware Description Language, or HDL. This software description is verified using a software environment called testbench, mapped to hardware circuit models and implemented physically before being shipped for fabrication. The ability to design circuits using a programming language offers significant benefits: ability to begin testing (verification) early in the design cycle, thereby reducing the probability of discovering defects later is compelling. More importantly, attracting skilled design resources becomes easier.
A majority of design resources involved in integrated circuit design is employed in activities such as RTL design and verification, the most resource intensive domain. Are you game?