Several
improvements in Java EE 7 are relevant. Obviously, the new batch specification,
JSR 352, is tremendously valuable, and not only for cloud computing. It’s able
to take significant amounts of work that might otherwise have to be done
synchronously and break it down into smaller units and perform those asynchronously.
In addition, the Java EE role definitions have been updated to better map to
the security requirements we
see in cloud environments, such as the difference between someone administering
platform as a service [PaaS], on which the application is running, versus administering
the application itself that is being hosted. Software
also works better in a cloud environment when we get rid of certain
assumptions. One way to do this is through dependency injection, which was introduced
in Java EE 5 and, as of Java EE 7, now applies across the entire Java set of
enterprise specifications and is called Context and
Dependency Injection [CDI]. Instead of going out and finding what you need as a
component, you simply declare what you need. If you need to connect to a
database, the component declares that it needs to be connected to a database
and then it allows whatever environment it’s running in to provide it with a
connection to that database based on how that environment is configured. IaaS
manages the requisite networking and server hardware, and it typically hosts
virtual machines, each of which is running an operating system—all of which is below
the level of Java EE. We imagine that every data center, every private cloud,
and every public cloud will be providing IaaS: infrastructure services that
platforms and applications can take advantage of through standardized IaaS
APIs. Generally speaking, what developers are looking for is PaaS. Developers
need to be able to describe
an application hosting environment: an application server or a cluster
of application servers, which are often combined with a database. And
they need to have their application exposed to the real world, protected by a
firewall, and automatically balanced by a load balancer. In
other words, they’re not interested in building or installing their own
firewall, load balancer, or database. They want to be able to take an
application, including necessary components and their database design, and
deploy it in a way that is accessible and secure. So, think of an application
that you’re deploying for a mobile platform; it’s probably going to
consist of a significant number of RESTful interfaces that are exposed to
a mobile platform. Those RESTful interfaces will be exposed through a
URL that will come to a load balancer that spreads requests across an elastically
scaled application server infrastructure, providing both high availability
and elastic scalability. The application servers will be running the application
logic, which will be transforming information from a database or other data
services into RESTful responses that are sent back to the mobile application
itself. All of the complexity of provisioning, configuring, monitoring, and
scaling the application infrastructure is provided and managed by PaaS.
No comments:
Post a Comment