VMware and Google Advance Cloud Computing

VMware on Thursday announced with Google the general availability of the first in a series of technology collaborations to make enterprise software developers more efficient at building, deploying and managing applications within any cloud environment on any device. The collaborative projects that will be available in the next two weeks include Spring Roo and Google Web Toolkit, Spring Insight and Google Speed Tracer, SpringSource Tool Suite and Google Plugin for Eclipse.
"Together, Google and VMware enable enterprises to develop and deploy rich Spring Java applications across multiple clouds and devices." said Rod Johnson, SVP, application platform division at VMware. "Today we have reached an important milestone where these modern applications can run smoothly within the firewalls of a company's production datacenter or in a trusted provider's cloud environment."
The general availability of these projects represents the first in a series of technology collaborations to enhance cloud portability across multiple clouds and devices. The next collaboration projects will focus on even broader mobile application support and accessing data in the cloud, as demonstrated today by the ability to deploy a SQL-based Spring application on Google App Engine for Business.
"Developers are looking for faster ways to build and run great web applications, and businesses want platforms that are open and flexible," said Vic Gundotra, Google vice president of developer platforms. "By making deployments of Spring Java applications on Google App Engine using Google Web Toolkit generally available, developers can deploy Java applications in production environments of their choice while leveraging rich web front-end across multiple devices."

Microsoft Cloud Channel Conflict - Deja Vu All Over Again

When Microsoft announced their new cloud-basedOffice 365 service yesterday, the press release didn't say much about how it would actually be deployed.  But, from what their executives said at the announcement event, the take-away was that customers would get at the new on-line versions of Office, Exchange, SharePoint, and Lync through a Microsoft-run public cloud.  So I thought and thus reported, but that was only the less interesting half of the story.
Fortunately I am read in Redmond, and this morning someone from Microsoft who works in the area of "hosting, telecommunications, and media partner channels" sent me a nice note pointing to the... ressst of the story, anarticle written by Marco Limena, the Microsoft VP of Communications Sector Business Channels.  The title of the article asks a question that I must admit crossed my mind after I filed my story, "Office 365: What Does It Mean for Hosting Providers?"  It turns out the answer is, "A lot, maybe."
Provider Partners Vital
In addition to providing Office 365 on its own cloud, Microsoft aims to also make it available through cloud service providers, like hosting services, telcos, and others, who will offer "value-added services that extend beyond the features offered in Office 365."
Those services will include API-based extensions to the core Office 365 apps or other applications integrated with them, like content management, business intelligence and vertical industry SaaS apps.  Moving down the cloud stack, Limena also points to services like Active Directory synchronization, added storage and security features, archiving, IT management, and more.
After providing a pair of seemingly obscure partner example/testimonials perhaps intended to be folksy, Mr. Limena closes with the following paragraph:
"Microsoft sees service provider partners becoming more important as the cloud becomes more predominant. Given the experience of hosting service providers in deploying and selling infrastructure and cloud services, businesses will depend on them for IT as a service. For Microsoft and its hosting partners to effectively compete and succeed together in the under 50 users segment and beyond, Microsoft is working with partners to move them from commoditized hosting services to become one-stop, location-independent IT providers."
We Don't Need No Stinking Partners
Compare that to the statements made by Microsoft Office Division President, Kurt DelBene at the Office 365 launch yesterday wherein he heavily touted the "20 football fields of elastic IT capacity" that will be reprovisioned every 90 days and made available to customers under "99.9%" SLAs that guarantee uptime against refund penalties.
As an aside, "three nines" sounds good until you consider that it translates into more than ten minutes of downtime per week.  By comparison, "four nines" means about one minute and "five nines" - the gold standard of traditional telco services - about six seconds of downtime per week.
So, the top Office guy is saying Microsoft is "all in" as a direct cloud service provider and not so much as mentioning Office 365's other channels while the Microsoft guy responsible for the telco channel, the best bet for true utility-grade cloud service delivery, struggles to be heard when he says the provider channel is important to Microsoft.  Which is it?
DelBene's point sounds a bit specious, even though he is the master of the Office 365 domain, while what Limena says sounds like a sensible strategy, even though he is, no disrespect intended, a share cropper in that domain.
Lord of the Flies, Again?
But, relative wisdom and rank aside, what they are both really telling us is how their compensation is a cage match purse and how Steve Balmer is still the Lord of the Flies, with an indefatigable faith in the collective earning power of internecine struggle.
It's so 80's, "Greed is Good", and, sadly, it perpetuates the zero-sum game that Microsoft has played with its customers, partners, and employees since that storied decade - mining billions from a carefully managed gap between inspired ideas and indifferent execution, the idea of five nines versus the execution of three.
OK, I admit it, I am feeling a bit cranky right now from spending the weekend resuscitating a Windows PC that died, not because I dropped or abused it, but because I let it run Windows Update on itself which, unbeknownst to me, did not create a restore point before working its destructive magic.  The saddest part of all is that every Windows user reading this knows the precise meaning of every word of that sentence and just heaved a deep empathetic sigh.  It was a "no nines" weekend and we've all had them.
Steve Balmer has famously said that Microsoft is "all in" on the cloud, but the disparity of the executive utterances within the context of yesterday's momentous announcement tells us that the company is still figuring out what "all in" means.   To some there, like DelBene, it seems to mean adding value to the cloud by putting Microsoft software, as is, into it.  To others, like Limena, it seems to mean adding value to Microsoft software by enabling cloud providers and other partners to improve, extend and reshape it in a new model.  I know which one I like the sound of better.  How about you?

Google Maps and ASP.NET Part-I

I am sure that most of you have heard about or have had a chance to use Google Maps. It's a great service and I was really impressed by the responsiveness of the application and the ease with which users could drag and zoom maps from a Web browser. It has in many ways heralded the arrival of AJAX (Asynchronous JavaScript and XML), which I am sure will revitalize Web development in the days to come.
What makes the service even better is the availability of the Google Maps API (Application Programming Interface) as a free Beta service. The API allows developers to embed Google Maps in their custom applications. It also allows them to overlay information on the map and customize the map to their needs. As I write this article there are quite a few sites that utilize Google Maps, and more and more of them are appearing by the day.
The API by itself is pretty straightforward and easy to use; however, it requires the developer to have a good command of JavaScript because it extensively relies on client-side Java scripting. In this article we will be looking at building a custom ASP.NET server control that would allow a .NET developer to harness the power of Google Maps in the code-behind model. We will see how to accomplish most of the functionality exposed by Google Maps using this control, and we'll also see how to data bind the control, thereby allowing developers to easily build data-driven custom ASP.NET Web applications. The control would eliminate the need for the developer to write any JavaScript to accomplish most of the Google Map functionality.
Some Google Maps Basics
Before we get into the details of the ASP.NET control, let's look at the basics of the Google Maps API. A detailed description of the API can be found at www.google.com/apis/maps/documentation/. The first step before using Google Maps is to register for a key with Google (www.google.com/apis/maps/signup.html). This is absolutely free and hardly takes a few minutes. Each Web site that uses Google Maps has to have its own key. Make sure that you go through Google's Terms of Use (www.google.com/apis/maps/terms.html) before you start using Google Maps in your application.
Google represents an instance of the map as a "GMap" object. It is rendered as a div tag on the page. Once you have the map, it is possible to add controls to the map. Some of the available controls are the GMapType control that helps to toggle between the different views, namely map view, satellite view, and finally, the hybrid view that is a combination of map and satellite views. The other controls that are usually seen on the map are the ones used to add scrolling and zooming capability to the map. At the time of writing of this article, there are three different controls available:
  • GLargeMapControl: A large control for scrolling and zooming
  • GSmallMapControl: Similar to the previous one, but eliminates the zoom scale bar
  • GSmallZoomControl: Includes only Zooming controls
Once the map has been set up, it is possible to overlay information on the map. The information can be in the form of points or lines, though points are the most common ones. In order to overlay a point on the Google Map, it's necessary to know its longitude and latitude. At this time, Google does not provide any geo-coding services that give the co-ordinates corresponding to an address, but there are a couple of free services available on the internet that do so. www.Geocoder.us is one of them and given a US address, it returns the longitude and latitude for the same. Once the longitude and latitude have been obtained, create an instance of a GPoint (which is Google's representation of a point on the map), then create a GMarker using this point and add the marker to the instance of the Google Map. In order to Center and Zoom on a point, the GMap Object exposes a method ZoomandCenter that takes the point and the level of zoom required as the parameter. Just like points, it is possible to overlay lines on the Map. Those of you who have used Google Maps for directions will be familiar with the lines used to depict the route. In order to add a line to the Google Map, we need to create an instance of a GPolyLine object and pass in an array of GPoints to plot it. It is also possible to assign color, width, and opacity to the line. Another useful feature in Google Maps is the ability to show a pop-up window when the user clicks on a Marker. Google Calls this pop-up window by the name "InfoWindow."
The Google Maps ASP.NET Control (GMAP Control)
The main aim of this control is to allow .NET developers to utilize the functionality of Google maps as a server-side control by writing little to almost no JavaScript at all. It is more of a .NET wrapper around the Google API; however, because it is a full-fledged ASP.NET server-side control, it is possible to bind data to the control, thereby increasing the usability of Google Maps. In the following sections we will see how to use this control to implement most of the common functionality of Google Maps. Before we do so, let's take a look at the control. The principal class of the control is the "GMapControl" class. This class in turn references the following classes (most of these classes are the .NET equivalents of the classes used by Google):

Google Maps and ASP.NET Part-II

  • GPoint: This is the class representation of a geographical point and exposes latitude and longitude as its two properties.
  • GPoints: This class represents a collection of GPoint objects.
  • GIcon: Represents a custom icon that is used as an overlay on the map. The GIcon class exposes the following properties: the Image URL, which as the name suggests, is the URL of the image used to represent the icon; ShadowImageURL is the URL of the shadow associated with the icon; IconSize and ShadowSize represent the size of the icon and the shadow, and the last two properties are IconAnchor and InfoWindowAnchor, which specify the point where the icon should be anchored to the map relative to its top-left corner and the point where the Info window should be anchored to the map.
  • GLine: This is a line that the user wishes to overlay on the map. By default it takes a collection of points (GPoints) as an argument in its constructor. It is also possible to set the color of the line as well as its weight and opacity through an overloaded constructor.
  • GMarker: This is the .NET representation of the Google Maps class GMarker. The default constructor accepts an instance of a GPoint class. It also has an overloaded constructor that takes a GIcon along with the GPoint in case the developer wishes to use a custom icon to represent the marker.
  • GSize: Represents a two-dimensional size measurement.
  • JScriptGenerator: This is an internal class and has more of a helper function. It generates most of the JavaScript functions that are needed by the control.
  • HelperColorConvertor: This class is used to convert a color into its equivalent Hex value. This class is marked as internal.
  • HelperDataResolver: This is an internal class that helps in data binding and has just one method. The method casts a datasource object into an object that implements the IEnumerable interface. The help file that describes in detail the different methods and properties of the classes involved is available as a download.
Getting Started in ASP.NET
Before we use the ASP.NET control in our application, there are a few things that need to be taken care of to ensure that it works as desired.
Web.config File
The GMAP control renders itself as a DIV tag, however for non-Internet Explorer Browsers, ASP.NET renders the div tag as tables. If you want the page to render the GMAP control properly in other browsers such as Netscape and Firefox, include the browser cap section shown in Listing 1 into the Web.config file of your application.
Page Configuration
Google has certain recommendations for the HTML standards on pages that contain the map to make sure that the layout is predictable across different browsers. A detailed description of the same can be found in the Google maps documentation. It is imperative that you follow these standards, especially if you plan to overlay lines on your map. For lines to be rendered on the map, you need to include the VML namespace in the HTML page for Internet Explorer browsers. Make sure that you don't forget to do this, because otherwise the lines will not be displayed in Internet Explorer. The HTML tag of your page should at the minimum look like the snippet below:
<HTML xmlns:v="urn:schemas-microsoft-com:vml">
Adding to the Toolbar
This step is optional; however if you are using Visual Studio .NET as your IDE, I would recommend that you go ahead and add the GMap control to your toolbox. The advantage of doing so is that you can easily drag and drop the GMap control onto an ASPX page like any other ASP.NET control, and Visual Studio will automatically register the control on your page. Figure 1 shows the GMap control on the toolbar.
Creating a Basic Map Using the Control
Since we are done with the setup, let's go ahead and create a simple example using the control. We will add the GMap control to the page, set its dimensions, and make it center and zoom at a particular point. For the sample application used in this article, I have saved the map key in the Web.config file and will be setting the GoogleMapKey property of the control from the config file. I will be setting the map type of the control to be that that of "Map." In case no map type is specified, the control defaults to the preset "Map." The GMap Control also supports satellite and hybrid map types. Make sure that you center and zoom at a point, otherwise all that will show up will be a grey area. Listing 2 shows the code for this example and Figure 2 shows the output.
Setting the GMap Control Properties
Let's go ahead and set some properties to the basic example we just created. The GMap control exposes a set of properties that allows the developer to customize the control to his or her needs. If we wish to give the user the flexibility to change the view, we set the ShowMapTypeControl property of the control to true. By default, the user is able to drag the map, however, if we do not wish the user to drag the map around, we can set the EnableDragging property to false. To allow the user to be able to scroll or zoom, set the ScrollControlType property of the control. There are three different options: "large," "small," and "zoom only," to correspond to the controls offered by Google. Listing 3 shows the source code and Figure 3 shows the output in the browser.

VMware and Google Advance Cloud Computing

VMware on Thursday announced with Google the general availability of the first in a series of technology collaborations to make enterprise software developers more efficient at building, deploying and managing applications within any cloud environment on any device. The collaborative projects that will be available in the next two weeks include Spring Roo and Google Web Toolkit, Spring Insight and Google Speed Tracer, SpringSource Tool Suite and Google Plugin for Eclipse.
"Together, Google and VMware enable enterprises to develop and deploy rich Spring Java applications across multiple clouds and devices." said Rod Johnson, SVP, application platform division at VMware. "Today we have reached an important milestone where these modern applications can run smoothly within the firewalls of a company's production datacenter or in a trusted provider's cloud environment."
The general availability of these projects represents the first in a series of technology collaborations to enhance cloud portability across multiple clouds and devices. The next collaboration projects will focus on even broader mobile application support and accessing data in the cloud, as demonstrated today by the ability to deploy a SQL-based Spring application on Google App Engine for Business.
"Developers are looking for faster ways to build and run great web applications, and businesses want platforms that are open and flexible," said Vic Gundotra, Google vice president of developer platforms. "By making deployments of Spring Java applications on Google App Engine using Google Web Toolkit generally available, developers can deploy Java applications in production environments of their choice while leveraging rich web front-end across multiple devices."

Microsoft Cloud Channel Conflict - Deja Vu All Over Again

When Microsoft announced their new cloud-basedOffice 365 service yesterday, the press release didn't say much about how it would actually be deployed.  But, from what their executives said at the announcement event, the take-away was that customers would get at the new on-line versions of Office, Exchange, SharePoint, and Lync through a Microsoft-run public cloud.  So I thought and thus reported, but that was only the less interesting half of the story.
Fortunately I am read in Redmond, and this morning someone from Microsoft who works in the area of "hosting, telecommunications, and media partner channels" sent me a nice note pointing to the... ressst of the story, anarticle written by Marco Limena, the Microsoft VP of Communications Sector Business Channels.  The title of the article asks a question that I must admit crossed my mind after I filed my story, "Office 365: What Does It Mean for Hosting Providers?"  It turns out the answer is, "A lot, maybe."
Provider Partners Vital
In addition to providing Office 365 on its own cloud, Microsoft aims to also make it available through cloud service providers, like hosting services, telcos, and others, who will offer "value-added services that extend beyond the features offered in Office 365."
Those services will include API-based extensions to the core Office 365 apps or other applications integrated with them, like content management, business intelligence and vertical industry SaaS apps.  Moving down the cloud stack, Limena also points to services like Active Directory synchronization, added storage and security features, archiving, IT management, and more.
After providing a pair of seemingly obscure partner example/testimonials perhaps intended to be folksy, Mr. Limena closes with the following paragraph:
"Microsoft sees service provider partners becoming more important as the cloud becomes more predominant. Given the experience of hosting service providers in deploying and selling infrastructure and cloud services, businesses will depend on them for IT as a service. For Microsoft and its hosting partners to effectively compete and succeed together in the under 50 users segment and beyond, Microsoft is working with partners to move them from commoditized hosting services to become one-stop, location-independent IT providers."
We Don't Need No Stinking Partners
Compare that to the statements made by Microsoft Office Division President, Kurt DelBene at the Office 365 launch yesterday wherein he heavily touted the "20 football fields of elastic IT capacity" that will be reprovisioned every 90 days and made available to customers under "99.9%" SLAs that guarantee uptime against refund penalties.
As an aside, "three nines" sounds good until you consider that it translates into more than ten minutes of downtime per week.  By comparison, "four nines" means about one minute and "five nines" - the gold standard of traditional telco services - about six seconds of downtime per week.
So, the top Office guy is saying Microsoft is "all in" as a direct cloud service provider and not so much as mentioning Office 365's other channels while the Microsoft guy responsible for the telco channel, the best bet for true utility-grade cloud service delivery, struggles to be heard when he says the provider channel is important to Microsoft.  Which is it?
DelBene's point sounds a bit specious, even though he is the master of the Office 365 domain, while what Limena says sounds like a sensible strategy, even though he is, no disrespect intended, a share cropper in that domain.
Lord of the Flies, Again?
But, relative wisdom and rank aside, what they are both really telling us is how their compensation is a cage match purse and how Steve Balmer is still the Lord of the Flies, with an indefatigable faith in the collective earning power of internecine struggle.
It's so 80's, "Greed is Good", and, sadly, it perpetuates the zero-sum game that Microsoft has played with its customers, partners, and employees since that storied decade - mining billions from a carefully managed gap between inspired ideas and indifferent execution, the idea of five nines versus the execution of three.
OK, I admit it, I am feeling a bit cranky right now from spending the weekend resuscitating a Windows PC that died, not because I dropped or abused it, but because I let it run Windows Update on itself which, unbeknownst to me, did not create a restore point before working its destructive magic.  The saddest part of all is that every Windows user reading this knows the precise meaning of every word of that sentence and just heaved a deep empathetic sigh.  It was a "no nines" weekend and we've all had them.
Steve Balmer has famously said that Microsoft is "all in" on the cloud, but the disparity of the executive utterances within the context of yesterday's momentous announcement tells us that the company is still figuring out what "all in" means.   To some there, like DelBene, it seems to mean adding value to the cloud by putting Microsoft software, as is, into it.  To others, like Limena, it seems to mean adding value to Microsoft software by enabling cloud providers and other partners to improve, extend and reshape it in a new model.  I know which one I like the sound of better.  How about you?

Google Maps and ASP.NET Part-I

I am sure that most of you have heard about or have had a chance to use Google Maps. It's a great service and I was really impressed by the responsiveness of the application and the ease with which users could drag and zoom maps from a Web browser. It has in many ways heralded the arrival of AJAX (Asynchronous JavaScript and XML), which I am sure will revitalize Web development in the days to come.
What makes the service even better is the availability of the Google Maps API (Application Programming Interface) as a free Beta service. The API allows developers to embed Google Maps in their custom applications. It also allows them to overlay information on the map and customize the map to their needs. As I write this article there are quite a few sites that utilize Google Maps, and more and more of them are appearing by the day.
The API by itself is pretty straightforward and easy to use; however, it requires the developer to have a good command of JavaScript because it extensively relies on client-side Java scripting. In this article we will be looking at building a custom ASP.NET server control that would allow a .NET developer to harness the power of Google Maps in the code-behind model. We will see how to accomplish most of the functionality exposed by Google Maps using this control, and we'll also see how to data bind the control, thereby allowing developers to easily build data-driven custom ASP.NET Web applications. The control would eliminate the need for the developer to write any JavaScript to accomplish most of the Google Map functionality.
Some Google Maps Basics
Before we get into the details of the ASP.NET control, let's look at the basics of the Google Maps API. A detailed description of the API can be found at www.google.com/apis/maps/documentation/. The first step before using Google Maps is to register for a key with Google (www.google.com/apis/maps/signup.html). This is absolutely free and hardly takes a few minutes. Each Web site that uses Google Maps has to have its own key. Make sure that you go through Google's Terms of Use (www.google.com/apis/maps/terms.html) before you start using Google Maps in your application.
Google represents an instance of the map as a "GMap" object. It is rendered as a div tag on the page. Once you have the map, it is possible to add controls to the map. Some of the available controls are the GMapType control that helps to toggle between the different views, namely map view, satellite view, and finally, the hybrid view that is a combination of map and satellite views. The other controls that are usually seen on the map are the ones used to add scrolling and zooming capability to the map. At the time of writing of this article, there are three different controls available:
  • GLargeMapControl: A large control for scrolling and zooming
  • GSmallMapControl: Similar to the previous one, but eliminates the zoom scale bar
  • GSmallZoomControl: Includes only Zooming controls
Once the map has been set up, it is possible to overlay information on the map. The information can be in the form of points or lines, though points are the most common ones. In order to overlay a point on the Google Map, it's necessary to know its longitude and latitude. At this time, Google does not provide any geo-coding services that give the co-ordinates corresponding to an address, but there are a couple of free services available on the internet that do so. www.Geocoder.us is one of them and given a US address, it returns the longitude and latitude for the same. Once the longitude and latitude have been obtained, create an instance of a GPoint (which is Google's representation of a point on the map), then create a GMarker using this point and add the marker to the instance of the Google Map. In order to Center and Zoom on a point, the GMap Object exposes a method ZoomandCenter that takes the point and the level of zoom required as the parameter. Just like points, it is possible to overlay lines on the Map. Those of you who have used Google Maps for directions will be familiar with the lines used to depict the route. In order to add a line to the Google Map, we need to create an instance of a GPolyLine object and pass in an array of GPoints to plot it. It is also possible to assign color, width, and opacity to the line. Another useful feature in Google Maps is the ability to show a pop-up window when the user clicks on a Marker. Google Calls this pop-up window by the name "InfoWindow."
The Google Maps ASP.NET Control (GMAP Control)
The main aim of this control is to allow .NET developers to utilize the functionality of Google maps as a server-side control by writing little to almost no JavaScript at all. It is more of a .NET wrapper around the Google API; however, because it is a full-fledged ASP.NET server-side control, it is possible to bind data to the control, thereby increasing the usability of Google Maps. In the following sections we will see how to use this control to implement most of the common functionality of Google Maps. Before we do so, let's take a look at the control. The principal class of the control is the "GMapControl" class. This class in turn references the following classes (most of these classes are the .NET equivalents of the classes used by Google):

Google Maps and ASP.NET Part-II

  • GPoint: This is the class representation of a geographical point and exposes latitude and longitude as its two properties.
  • GPoints: This class represents a collection of GPoint objects.
  • GIcon: Represents a custom icon that is used as an overlay on the map. The GIcon class exposes the following properties: the Image URL, which as the name suggests, is the URL of the image used to represent the icon; ShadowImageURL is the URL of the shadow associated with the icon; IconSize and ShadowSize represent the size of the icon and the shadow, and the last two properties are IconAnchor and InfoWindowAnchor, which specify the point where the icon should be anchored to the map relative to its top-left corner and the point where the Info window should be anchored to the map.
  • GLine: This is a line that the user wishes to overlay on the map. By default it takes a collection of points (GPoints) as an argument in its constructor. It is also possible to set the color of the line as well as its weight and opacity through an overloaded constructor.
  • GMarker: This is the .NET representation of the Google Maps class GMarker. The default constructor accepts an instance of a GPoint class. It also has an overloaded constructor that takes a GIcon along with the GPoint in case the developer wishes to use a custom icon to represent the marker.
  • GSize: Represents a two-dimensional size measurement.
  • JScriptGenerator: This is an internal class and has more of a helper function. It generates most of the JavaScript functions that are needed by the control.
  • HelperColorConvertor: This class is used to convert a color into its equivalent Hex value. This class is marked as internal.
  • HelperDataResolver: This is an internal class that helps in data binding and has just one method. The method casts a datasource object into an object that implements the IEnumerable interface. The help file that describes in detail the different methods and properties of the classes involved is available as a download.
Getting Started in ASP.NET
Before we use the ASP.NET control in our application, there are a few things that need to be taken care of to ensure that it works as desired.
Web.config File
The GMAP control renders itself as a DIV tag, however for non-Internet Explorer Browsers, ASP.NET renders the div tag as tables. If you want the page to render the GMAP control properly in other browsers such as Netscape and Firefox, include the browser cap section shown in Listing 1 into the Web.config file of your application.
Page Configuration
Google has certain recommendations for the HTML standards on pages that contain the map to make sure that the layout is predictable across different browsers. A detailed description of the same can be found in the Google maps documentation. It is imperative that you follow these standards, especially if you plan to overlay lines on your map. For lines to be rendered on the map, you need to include the VML namespace in the HTML page for Internet Explorer browsers. Make sure that you don't forget to do this, because otherwise the lines will not be displayed in Internet Explorer. The HTML tag of your page should at the minimum look like the snippet below:
<HTML xmlns:v="urn:schemas-microsoft-com:vml">
Adding to the Toolbar
This step is optional; however if you are using Visual Studio .NET as your IDE, I would recommend that you go ahead and add the GMap control to your toolbox. The advantage of doing so is that you can easily drag and drop the GMap control onto an ASPX page like any other ASP.NET control, and Visual Studio will automatically register the control on your page. Figure 1 shows the GMap control on the toolbar.
Creating a Basic Map Using the Control
Since we are done with the setup, let's go ahead and create a simple example using the control. We will add the GMap control to the page, set its dimensions, and make it center and zoom at a particular point. For the sample application used in this article, I have saved the map key in the Web.config file and will be setting the GoogleMapKey property of the control from the config file. I will be setting the map type of the control to be that that of "Map." In case no map type is specified, the control defaults to the preset "Map." The GMap Control also supports satellite and hybrid map types. Make sure that you center and zoom at a point, otherwise all that will show up will be a grey area. Listing 2 shows the code for this example and Figure 2 shows the output.
Setting the GMap Control Properties
Let's go ahead and set some properties to the basic example we just created. The GMap control exposes a set of properties that allows the developer to customize the control to his or her needs. If we wish to give the user the flexibility to change the view, we set the ShowMapTypeControl property of the control to true. By default, the user is able to drag the map, however, if we do not wish the user to drag the map around, we can set the EnableDragging property to false. To allow the user to be able to scroll or zoom, set the ScrollControlType property of the control. There are three different options: "large," "small," and "zoom only," to correspond to the controls offered by Google. Listing 3 shows the source code and Figure 3 shows the output in the browser.

Will Oracle Bid for HP?

"Larry Ellison is borderline bat-shit crazy on a good day," the analyst Rob Enderle is quoted as saying in a piece last week by Sam Gustin - a senior writer at DailyFinance, an AOL Finance & Money site.

Enderle was prompted to utter this remark by speculation that perhaps the Oracle CEO is about to embark upon the acquisition of his life: of HP.

"I think his bet is that he can damage HP enough that it drops in value and he can wander in with an offer," Enderle is quoted as having added.



So is it possible that Ellison the Conqueror, CEO of Oracle Corporation since he founded the company in 1977, truly has the $90BN HP in the crosshairs of his acquisition rifle-sight? Can a $120BN company somehow buy and absorb a $90BN one?

Well certainly he now has on board the exact right man to tackle the integration of such a purchase: none other than HP's own former CEO, Mark Hurd. And, as Gustin expresses it:
'Ellison is a man with ambitions as big as his MIG-29 fighter jet is fast, and he's got a history of stating that the info-tech industry will further consolidate in the same way the auto industry consolidated into the Big Three in the U.S.'
 "When your end goal is global dominance, difficulty is a mere distraction," Gustin notes. 

Enderle was quick to highlight a revenge-is-sweet angle to, to the possible scenario.

"[W]hat could be sweeter revenge for Hurd than winding up running HP again - as a part of Oracle?"

Credit for first raising the possibility of an Oracle-HP bid goes not to Enderle or Gustin, btw, but to former FT journalist Tom Forenski, who was already writing speculatively about such a scenario back in mid-August - that's to say, before Mark Hurd had even been made Co-President of Oracle.

With cloud computing now driving a sea-change in how enterprise IT datacenters are put together, one thing is certain: more consolidation is right around the corner.

Only time will tell if an Oracle bid for HP will be next. This one, as they say, will run and run.


source:http://java.sys-con.com/node/1530803

Will Oracle Bid for HP?

"Larry Ellison is borderline bat-shit crazy on a good day," the analyst Rob Enderle is quoted as saying in a piece last week by Sam Gustin - a senior writer at DailyFinance, an AOL Finance & Money site.

Enderle was prompted to utter this remark by speculation that perhaps the Oracle CEO is about to embark upon the acquisition of his life: of HP.

"I think his bet is that he can damage HP enough that it drops in value and he can wander in with an offer," Enderle is quoted as having added.



So is it possible that Ellison the Conqueror, CEO of Oracle Corporation since he founded the company in 1977, truly has the $90BN HP in the crosshairs of his acquisition rifle-sight? Can a $120BN company somehow buy and absorb a $90BN one?

Well certainly he now has on board the exact right man to tackle the integration of such a purchase: none other than HP's own former CEO, Mark Hurd. And, as Gustin expresses it:
'Ellison is a man with ambitions as big as his MIG-29 fighter jet is fast, and he's got a history of stating that the info-tech industry will further consolidate in the same way the auto industry consolidated into the Big Three in the U.S.'
 "When your end goal is global dominance, difficulty is a mere distraction," Gustin notes. 

Enderle was quick to highlight a revenge-is-sweet angle to, to the possible scenario.

"[W]hat could be sweeter revenge for Hurd than winding up running HP again - as a part of Oracle?"

Credit for first raising the possibility of an Oracle-HP bid goes not to Enderle or Gustin, btw, but to former FT journalist Tom Forenski, who was already writing speculatively about such a scenario back in mid-August - that's to say, before Mark Hurd had even been made Co-President of Oracle.

With cloud computing now driving a sea-change in how enterprise IT datacenters are put together, one thing is certain: more consolidation is right around the corner.

Only time will tell if an Oracle bid for HP will be next. This one, as they say, will run and run.


source:http://java.sys-con.com/node/1530803

Android Hit with Fourth Patent Infringement Suit

The big Dutch-based smart card shop Gemalto has filed suit in the famed, prosecution-leaning federal court in the Eastern District of Texas against Google and phone makers HTC, Motorola and Samsung charging them and their Android widgetry with patent infringement.
The freebie operating system, which is currently running the most popular smartphones in America, is proving to be quite a little suit magnet. So far Apple has sued HTC, Oracle has sued Google and Microsoft has sued Motorola over Android and all the suits allege IP trespass.
Gemalto, which is big in digital security like the SIMs used in mobile phones, smart bankcards, e-passports, identity credentials and USB tokens, claims Android, its Dalvik virtual machine and associated development tools and products infringe on patented technologies it developed at its R&D operation in Texas in the '90s and used in its pioneering Java Card.
The aggrieved company said in a statement that the technologies are "fundamental to running software, developed in a high-level programming language such as Java, on a resource-constrained device" like a phone and presumably a tablet.
And it claims the IP is essential to its future.
The first Java Card, widely used in SIM and ATM cards, was introduced by Schlumberger's card unit Axalto in 1996 and lets devices be programmed and made application-specific. Axalto merged with Gemplus in 2006 to form Gemalto, now a $2.3 billion company. Sun developed the Java Card Platform and holds the trademark.
Oracle also has a bone to pick with Google over Android's use of the open source Dalvik VM, which is not officially Java-compatible and never will be - Oracle has made that quite clear. Using it has let Google avoid paying proper royalties for the Java Mobile Edition, which is what Oracle claims it should be using for Android, not a subset of Harmony.

javaServer Faces (JSF) vs Struts

I would have to say, the most common question or feedback came along the lines of comparing Struts to JSF. I thought it would be a good idea to compare JSF to Struts by evaluating various features that an application architect would look for in a Web application framework. This article will compare specific features. Those on which I will focus include:
  • Maturity
  • Controller Flexibility/Event Handling
  • Navigation
  • Page development
  • Integration
  • Extensibility
Certainly, there are other places in which you might want to do a comparison, such as performance, but I'll focus on the set I just mentioned. I'll also spend more time on the Controller and Navigation sections because they are the heart of the frameworks. Performance of JSF is specific to the vendor implementation, and I always encourage people to perform their own performance tests against their own set of requirements because there are too many factors that can affect performance. A performance evaluation would be unfair. Other areas such as page layout, validation, and exception handling were also left out in the interest of saving space.

Maturity


Struts has been around for a few years and has the edge on maturity. I know of several successful production systems that were built using the Struts framework. One example is the WebSphere Application Server Web-based administrative console. JavaServer Faces(JSF), however, has been in draft for 2 years. Several companies, including IBM as well as the creator of Struts, Craig McClanahan, have contributed to the creation of JSF during that time. Nonetheless, it will take some time to see a few systems deployed.
Struts definitely has the edge in this category. With JSF, however, you can rely on different levels of support depending on which implementation you choose. For example, the JSF framework inside WebSphere Studio comes with IBM support.

Controller Flexibility/Event Handling


One of the major goals of Struts was to implement a framework that utilized Sun's Model 2 framework and reduced the common and often repetitive tasks in Servlet and JSP development. The heart of Struts is the Controller. Struts uses the Front Controller Pattern and Command Pattern. A single servlet takes a request, translates HTTP parameters into a Java ActionForm, and passes the ActionForm into a Struts Action class, which is a command. The URI denotes which Action class to go to. The Struts framework has one single event handler for the HTTP request. Once the request is met, the Action returns the result back to the front controller, which then uses it to choose where to navigate next. The interaction is demonstrated in Figure 1.
JSF uses the Page Controller Pattern. Although there is a single servlet every faces request goes through, the job of the servlet is to receive a faces page with components. It will then fire off events for each component and render the components using a render toolkit. The components can also be bound to data from the model. The faces life-cycle is illustrated in Figure 2.
JSF is the winner in this area, because it adds many benefits of a front controller, but at the same time gives you the flexibility of the Page Controller. JSF can have several event handlers on a page while Struts is geared to one event per request. In addition, with Struts, your ActionForms have to extend Struts classes, creating another layer of tedious coding or bad design by forcing your model to be ActionForms. JSF, on the other hand, gives developers the ability to hook into the model without breaking layering. In other words, the model is still unaware of JSF.

Navigation


Navigation is a key feature of both Struts and JSF. Both frameworks have a declarative navigation model and define navigation using rules inside their XML configuration file. There are 2 types of navigation: static navigation - when one page flows directly to the next; and dynamic navigation - when some action or logic determines which page to go to.
Both JSF and Struts currently support both types of navigation.
Struts
Struts uses the notion of forwards to define navigation. Based on some string, the Struts framework decides which JSP to forward to and render. You can define a forward by creating an Action as shown in the snippet below.
<action path="/myForward" forward="/target.jsp"> </action>
Struts supports dynamic forwarding by defining a forward specifically on an Action definition. Struts allows an Action to have multiple forwards.


<action-mappings>
<action name="myForm" path="/myACtion" scope="request"
type="strutsnav.actions.MyAction">
<forward name="success" path="./target.jsp">
</forward>
<forward name="error" path="./error.jsp">
</forward>

</action>
</action-mappings>
Developers can then programmatically choose which forward to return.


public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {

ActionErrors errors = new ActionErrors();
ActionForward forward = new ActionForward(); // return value
MyForm myForm = (MyForm) form;

try {

// do something here

} catch (Exception e) {

// Report the error using the appropriate name and ID.
errors.add("name", new ActionError("id"));
forward = mapping.findForward("success");
return (forward);
}

forward = mapping.findForward("success");
return (forward);

}
JSF Static Navigation
JSF supports navigation by defining navigation rules in the faces configuration file. The example below shows a navigation rule defining how one page goes to the next.


<navigation-rule>
<from-view-id>/FromPage.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/ToPage.jsp</to-view-id>
</navigation-case>
</navigation-rule>
However, unlike Struts, JSF navigation is applied on the page level and can be action-independent. The action is hard coded into the component allowing for finer grain control on the page. You can have various components on the page define different actions sharing the same navigation rule.
<hx:commandExButton type="submit" value="Submit"
styleClass="commandExButton" id="button1" action="success" />
JSF also supports dynamic navigation by allowing components go to an action handler.
<hx:commandExButton type="submit" value="Submit"
styleClass="commandExButton" id="button1" action="#
{pc_FromPage.doButton1Action}" />
Developers can then code action handlers on any class to make the dynamic navigation decision.


public String doButton1Action() {
return "success";
}
Even though navigation rules don't need to specify the action in order to support dynamic navigation, JSF allows you to define the action on the navigation rule if you so choose. This allows you to force a specific navigation rule to go through an action.


<navigation-rule>
<from-view-id>/FromPage.jsp</from-view-id>
<navigation-case>
<from-action>#{pc_FromPage.doButton1Action}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/ToPage.jsp</to-view-id>
</navigation-case>
</navigation-rule>
Both Struts and JSF are pretty flexible from a navigation stand point, but JSF allows for a more flexible approach and a better design because the navigation rule is decoupled from the Action. Struts forces you to hook into an action, either by a dummy URI or an action class. In addition, it is easier in JSF to have one page with various navigation rules without having to code a lot of if-else logic.

Page Development


JSF was built with a component model in mind to allow tool developers to support RAD development. Struts had no such vision. Although the Struts framework provides custom libraries to hook into Action Forms and offers some helper utilities, it is geared toward a JSP- and HTTP-centric approach. SF provides the ability to build components from a variety of view technologies and does it in such a way to be toolable. JSF, therefore, is the winner in this area.

Integration


Struts was designed to be model neutral, so there is no special hooks into a model layer. There are a view reflection-based copy utilities, but that's it. Usually, page data must be moved from an Action Form into another Model input format and requires manual coding. The ActionForm class, provides an extra layer of tedious coding and state transition.
JSF, on the other hand, hides the details of any data inside the component tree. Rich components such as data grids can be bound to any Java class. This allows powerful RAD development, such as the combination of JSF and SDO. I will discuss this further in future articles.

Extensibility


Both Struts and JSF provides opportunities to extend the framework to meet expanding requirements. The main hook for Struts is a RequestProcessor class that has various callback methods throughout the life-cycle of a request. A developer can extend this class to replace or enhance the framework.
JSF provides equivalent functionality by allowing you to extend special life-cycle interfaces. In addition, JSF totally decouples the render phase from the controller allowing developers to provide their own render toolkits for building custom components. This is one of the powerful features in JSF that Struts does not provide. JSF clearly has the advantage in this area.

Conclusion


In general, JSF is a much more flexible framework, but this is no accident. Struts is a sturdy framework and works well. JSF was actually able to learn a great deal from Struts projects. I see JSF becoming a dominant framework because of its flexible controller and navigation. Furthermore, JSF is built with integration and extensibility in mind. If you are starting a new project today, you'd have to consider many factors. If you have an aggressive schedule with not much time to deal with evaluating different vendors or dealing with support for new JSF implementations, Struts may be the way to go. But from a strategic direction and programming model, JSF should be the target of new applications. I encourage developers to take time to learn JSF and begin using them for new projects. In addition, I would consider choosing JSF vendors based on component set and RAD tools. JSF isn't easier than Struts when developing by hand, but using a RAD JSF tool like WebSphere Studio can greatly increase your productivity.