At Citrix Synergy in Barcleona, I got to have a look at Citrix’s latest addition to the FlexCast technology stack, Citrix RemotePC. Citrix RemotePC was released as part of Citrix XenDesktop 5.6 Feature Pack 1. While XenDesktop is Citrix’s hosted desktop solution, but Citrix Remote PC is not a virtualised desktop. Citrix Remote PC is secure brokering of a physical Windows endpoint (be that a desktop or a laptop) in your office, via Citrix’s HDX technology. Continue reading Citrix Remote PC: VDI complexity solved, or a kick start to a VDI project?
Over the last 15 years, Java has become one of the world’s most popular programming languages and runtime platforms for software development. Today, many agile developers are moving beyond the original Java language to newer ones that introduce new capabilities such as functional programming and dynamic typing while still run on the robust Java platform. With the migration of development to the cloud, the Java platform is experiencing remarkable resiliency with new vendors continually entering the Java Platform as a Service (PaaS) market.
The recent news that Heroku, popular in the Ruby community, is now supporting the full Java stack with a focus on enterprise Java development is a trend we see continuing. Vendors are embracing of the Java platform with it’s multi-language, multi-platform support. This article outlines the past and present of the Java platform including the new generation of languages and the leading PaaS vendors supporting them.
Java: Language and Platform
The Java language and underlying platform (including the Java Virtual Machine or JVM) emerged in 1995. Created by Sun Microsystems, Java burst onto the scene at just the time the Internet was taking off. After finding mild success with their initial focus on Java Applets (code run within web browsers), Sun turned their attention to enterprises and released the Java Enterprise Edition in 1998. Designed for building enterprise-class web applications, JEE (aka J2EE) has become one of the predominant standards today for building web applications. Many vendors sell products that implement the Java specifications including Oracle, IBM, HP and VMware with Spring.
From the beginning, the Java platform included the ability to run applications written in programming languages other than Java. Although Java has remained the most popular language, newer languages and newer compilers for existing languages are enabling the Java the platform to continue to grow beyond Java the language. While remaining a mainstay for enterprise customers, the growth of mobile and tablet apps in particular (Android is built with Java) has helped fuel the growth and popularity.
But today, nearly 20 years after the initial release of Java, it’s the platform and not the programming language that is increasingly the focus of agile developers and vendors.
Popular Languages for the Java Platform
There are several emerging languages that run in the Java platform and bring new capabilities to developers:
Scala – Short for scalable languages, Scala adds functional programming for improved parallel computing on the Java platform. Because it runs on the JVM, it can interoperate with existing Java applications and leverage existing Java libraries. Scala’s focus on parallel computing compliments the on-demand, scalable nature of cloud resources. As such, Scala is ideal for building highly scalable applications that run on dynamic cloud resources. Twitter, LinkedIn and Amazon.com are prominent solutions that use Scala for their high-performing applications.
Clojure – Clojure is a Lisp dialect for the Java platform. Like Scala, Clojure brings functional programming paradigms to the object-oriented Java community. Applications developed in Clojure can leverage multi-threaded architectures for fast performance and parallel processing – ideal when doing analysis of big data.
Groovy – Groovy is a dynamic language for the Java platform that can be used for applications as well as scripting. Similar to Ruby and Python, the language is fully interoperable with Java but it’s compact style means is generally requires less code to build applications (thus improving developer productivity). When used in conjunction with the web framework Grails the duo is quite similar to the popular Ruby on Rails framework for building apps. Because it runs on the Java platform and the code is similar to Java in style and syntax, many agile developers prefer Groovy and Grails for rapid web application development.
JRuby – JRuby is an implementation of the Ruby programming language on the Java platform. Originally developed by Sun, it’s now open source and allows developers to build Ruby applications that interoperate with Java applications and can leverage existing Java libraries. JRuby allows developers to rapidly build web applications in Ruby on Rails and deploy them on infrastructure that supports the Java platform.
Jython – Similar to JRuby, Jython is an implementation of the Python programming language on the Java platform. It allows developers to build applications in Python that interoperate with Java applications and can leverage existing Java libraries. With the popularity of Python growing, especially in the scientific community, Jython offers a nice solution for those wanting to use Python while still run on the familiar Java platform.
Java the Cloud Platform
A growing number of vendors are offering Java Platform as a Service (PaaS) solutions that support the Java Standard Edition (JSE) and JEE standards. Increasingly, these vendors support applications written in the languages described above in addition Java.
While individual features vary by vendor, most all provide simple steps for a developer to upload their Java application (as a .war or .ear file) and the solution takes care of much of the rest. This includes auto provisioning infrastructure resources on-demand (such as computing, storage, network and load balancers), deploying the application and monitoring for health. Most also include the ability to auto-scale the application based on traffic – a great feature for ensuring your web application can handle peak loads.
Like all PaaS’s, these solutions generally allow the developer to focus on the business domain and application logic and not worry about the infrastructure necessary to run it. Some, like Amazon’s Elastic Beanstalk, allow users to manage the underlying resources if they wish while others, like Open Shift and Heroku, keep these details hidden.
While a complete review of Java PaaS solutions is beyond the scope of this article, options include (in alphabetical order): AppFog, Cloud Foundry, CloudForge, CloudBees, CumuLogic, Elastic Beanstalk, Google App Engine, Heroku, Jelastic, Red Hat Open Shift, Stakato, StratosLive and Windows Azure.
Java’s future has never appeared brighter. While the popularity of Java the language may be fading, Java the platform has never been stronger. Developers are discovering new capabilities for solving complex problems and vendors new solutions for deploying Java applications in the cloud.
Amazon’s CTO Werner Vogel recently posted about the challenge of choosing the right metrics for cloud computing. He begins with the following observation where he introduces the idea of Return on Agility:
“In the many meetings with customers in which I have done a deep dive on their architecture and applications to help them create an accurate cost picture, I have observed two common patterns: 1) It is hard for customers to come to an accurate Total Cost of Ownership (TCO) calculation of an on-premise installation and 2) they struggle with how to account for the “Return on Agility”; the fact that they are now able to pursue business opportunities much faster at much lower costs points than before.” Continue reading Return on Agility and the Cloud
AppSense have announced the addition of DataNow Essentials to their User Virtualization Platform. DataNow Essentials is an enterprise data broker solution that gives users anywhere data access from PCs, Macs, tablets, and smartphones using existing IT infrastructure that is fully under the control of the enterprise IT team. The AppSense User Virtualization Platform, already used by some of the world’s largest enterprises to optimize enterprise desktops, now offers broader support for enterprise consumerization and the growing enterprise mobile workforce. Continue reading News: AppSense DataNow: Anywhere data access that starts in the enterprise
Liquidware Labs are demoing their upcoming Department Installed Applications (DIA) enhancement to ProfileUnity FlexApp at VMworld 2012. ProfileUnity FlexApp DIA addresses a challenging aspect of desktop administration: application management. We’ve already discussed if user installed applications are a dream or a nightmare. There is a business gain to give access to applications on-demand, to allow users greater freedom to control their workspace: yet in a business environment, that freedom requires laws. Continue reading VMworld 2012: Liquidware Labs Unveils On-Demand Department Installed Applications Feature
While not a major version release (we will have to wait for 6.0 next year for that), the new 5.1 version of the VMware products contains some significant new functionality, in addition to the packing of all of the components into the vCloud Suite.
New Features in vSphere 5.1
- User Access – There is no longer a dependency on a shared root account. Local users assigned administrative privileges automatically get full shell access
- Auditing – All host activity from both the shell and the Direct Console User Interface is now logged under the account of the logged in user
- Monitoring – Support is added for SNMPv3. The SNMP agent has been unbundled from the VMkernel and can now be independently updated.
- vMotion – a vMotion and an Storage vMotion can be combined into one operation. This allows a VM to be moved between two hosts or clusters that do not have any shared storage.
- New Windows Support – Support for both the Desktop and Server Editions of Windows 8/2012
- Hardware Accelerated 3D Graphics – Teaming up with NVIDIA, vSphere can now map a vGPU to each VM on a system. Not only does this feature accelerate 3D graphics but provides a GPU for high performance computing needs
- Improvements in Virtual hardware virtualization support – This brings Intel-VT/AMD RVI features further into the virtual machine which will improve virtualization within virtualization. In addition, more low level CPU counters are exposed which can be further used for high performance computing and real time style applications.
- Agentless Antivirus and Antimalware – vShield Endpoint is now included in vSphere 5.1 and offloads anti-virus and antimalware processing inside virtual machines to a secure dedicated virtual appliance delivered by VMware partners. This change lowers the cost of entry for Agentless Angivirus and Malware.
- New 64-vCPU Support – Virtual machines running on a vSphere 5.1 host can be configured with up to 64 virtual CPU’s and 1TB of RAM.
- Auto-Deploy – Auto-Deploy is extended with two new modes, “stateless caching” and “stateful installs”. In addition the number of concurrent reboots per Auto-Deploy host has been increased to 80
- SR-IOV Support – Single Root I/O Virtualization allows certain Intel NIC’s to transfer data directly into the memory space of a virtual machine without any involvement from the hypervisor. See this Intel Video
- Space Reclaiming Thin Provisioned Disks – These types of disks add the ability to reclaim deleted blocks from existing thin provisioned disks while the VM is running. To reclaim space is a two-part function of first wiping the disk marking unused blocks as free, and then to shrink the disk. These two features have been a part of VMware Tools for a number of years but now do things differently for thin provisioned disks. The underlying hardware is not initially part a part of the reclamation process. Instead the vSCSI layer within ESX reorganizes unused blocks to keep the used part of the thin provisioned disk contiguous. Once the unused parts are at the end of the thin provisioned disk then the hardware is involved.
- Tunable Block Size – Normally thin provisioned disks use a 4KB block size that is unchanging, however, this block size can be tuned indirectly as it is now based on the requirements of the underlying storage array. There is no method to tune this by hand.
- All Paths Down Improvements – When there was an all paths down (APD) situation, the vSphere management service would hang waiting on disk IO, which would cause the vSphere host to inadvertently disconnect from vCenter and in effect become unmanageable. APD handling has been improved such that transient APD events will not cause the vSphere management service to hang waiting on disk IO, use of vSphere HA to move workloads around to other hosts if APD detects a permanent device lost (PDL) situation, and implement a way to detect PDL for iSCSI arrays that present only one LUN.
- Storage Hardware/Software improvements – These improvements include the ability to boot from software FCoE, additions of Jumbo frame support for all iSCSI adapters (software or hardware), and support for 16Gb FC
- VAAI Improvements – VAAI has added support to allow vCloud Director fast-provisioned vApps to make use of VAAI enabled NAS array-based snapshots.
- vSphere S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) Implementation – vSphere has implemented SMART reporting via the esxcli commands so that SSD and other disks can report back on their status. In addition, esxcli has been upgraded to include ways to reset specific FC adapters directly as well as methods to retrieve event caching information such as link-up and link-down.
- Storage IO Contral Statistics and Settings Improvements – Finding the proper value for SIOC has been problematic, now it is possible to set a percentage instead of a millisecond value to determine when SIOC should fire. In addition, SIOC will report stats immediately instead of waiting. This allows Storage DRS has statistics available immediately, which improve its decision process. In addition, the observed latency of a VM (a new metric) is available within the vSphere Client performance charts. The observed latency is latency within the host and not just latency after storage packets leave the host
- Storage DRS Improvements – Storage DRS has been improved for workloads using vCloud Directory. Linked clones can now be migrated between datastores if there exists either the base disk or a shadow copy of the base disk. Storage DRS is also used now for initial placement of workloads when using vCloud Director.
- Improvements in Datastore Correlation for Non-VASA enabled arrays – For storage devices that do not support VASA it is difficult to correlate datastores against disk spindles on an array. There are now improvements in the datastore correlation such that vSphere can now detect if spindles are shared by datastores on the array regardless of VASA support.
By exposing virtual hardware (Intel-VT/AMD RVI) virtualization as well as more CPU counters and components VMware has exposed more capability than ever before. Tie this with virtual graphics processing units and we now have the ability to implement virtualized high performance and real-time computing environments. Add to this the storage improvements and large scale big data applications as well as high performance computing environments can be virtualized. Both require low latency networking and storage.
Virtualization has long since been the bane of high performance applications whether that is 3D graphics, high performance computing, big data, or real-time applications. vSphere 5.1 provides a possible solution to use cases while improving integration with the VMware vCloud Suite.