VMware VI (vSphere) Java API


News Download! Testimonials PoweredBy FAQ Forum Blog Twitter Bug About
vijavaNG 6.5 - the Smallest and Fastest Java API for vSphere
Nov 28, 2016

The commerical version of vijava API has been shipped this week. It's a major upgrade to support the latest vSphere 6.5 that VMware just announced on November 15. More details can be found at DoubleCloud Inc.'s product page.

"Super vCenter" for All vCenters Behind Single Pane of Glass
Feb 5, 2016

The next generation server product is launched this week. It leverage leading edge search and big data analytics to solve major pain points for VMware customers: usability and scalability. It can connect to ALL your vCenters for their inventories and events in real-time, and empower users to search/analyze/visualize/report with Google like HTML5 Web interface. More details and FREE downloads.

DoubleCloud ICE: New "IDE" for Managing Clouds
March 30, 2015

DoubleCloud ICE provides users an integrated cloud environment for cloud management in the same way as IDE for code development. Download the FREE App before offer ends.

VI Java API 5.5 Beta Released
September 27, 2013

The beta of VI Java API 5.5 was just released. It supports latest vSphere 5.5 that VMware released on Monday. For details, please read this blog article.

Commercial Support and Training is Available
September 3, 2013

If you need paid support for the open source API, please contact the creator Steve who just started a consulting and training business on VMware API integrations, and Infrastructure automation and orchestration.

New Tutorial Published at VMware Community
August 12, 2013

One of community members Pierre Laine has written a great tutorial on vijava API using NetBeans, together with the DoubleCloud code generator. You can check it out here.

Major Refactoring
July 1, 2013

Just finished a major code refactoring to make the code more modular and cleaner. This will be the code base for next version of API for new vSphere product.

Because there is no new feature, no binary build is created. To check out source code, click here

Project Upgrade Done
December 18, 2012

Per the notice of sourceforge, we've upgraded the project to new platform. The upgrade may affect you. Details are here.

VI Java API 5.1 GA is relased
November 25, 2012

The GA release was online today. For more details, please check out my blog.

VI Java API 5.1 Beta is Ready to Support vSphere 5.1
Sep 23, 2012

VI Java API 5.1 was released minutes ago. For details, please check out my blog.

vSphere Web Services SDK 5.1.0 Released
Sep 10, 2012

VMware just released vSphere 5.1.0 including its Web Service SDK. I have updated the API reference 5.1 here for easy consumption. Corresponding vijava 5.1 will be released soon. Stay tuned.

5.0.1 Released
May 18, 2012

I just released an update release of the API, version 5.0.1. Check out here for details.

Announcing Java Code Generator for vSphere
Feb 1, 2012

We just hit another historical milestone: 20,000 downloads of the open source API. To celebrate it, I decide to release code generator tool for vSphere Java API and more. Check it out here.

Vote Top 25 Virtualization Blogs 2012
January 26, 2012

It's time to vote for top 25. It's a great time to voice your choice and get to know other popular blogs besides DoubleCloud.org.

The Future of VI Java API and How You Can Help
October 25, 2011

We plan to continue and grow this open source project you rely on. For more details, check out this article for more details. It's highly recommended.

VI Java API 5.0 Is GAed
October 2, 2011

As promised VI Java API 5.0 is GAed today. For more details, check out annoucement for more details.

VI Java API 5.0 Beta Is Ready
August 25, 2011

I am happy to announce the 5.0 beta. Note that this 5.0 is the previous 3.0. To sync up with vSphere version, 5.0 is used. For more details, check here.

Community Meetup at VMworld 2011 Las Vegas
August 19, 2011

If you come to VMworld this year, please join us in the VMware Developer/Administrator meet up at the Community Lounge. Check here for details.

Recorded Tech Talks At Our First Community Meetup
June 07, 2011

If you missed our May 18 community meetup or simply want to hear them again, you can now check out the recording. For the presentation slides, please click here for the list. Enjoy!

Mark Your Calendar for Our First Community Meetup
April 13, 2011

We finally got the event set up on May 18, 2011 (a week earlier due to a time conflict) both onsite and online. Please check out details and RSVP here.

VI Java API Community Meetup
April 5, 2011

To celebrate the 3rd anniversary of VI Java API, we would like to organize a meetup on May 25th. Please see the details and show your support here.

VI Java API Hits 13,000 download milestone
March 16, 2011

Today we hit the 13,000 download milestone.

Welcome Cisco to Our Community
Feb 22, 2011

Today Cisco officially joined VI Java community after using the API over past two years. Check out here for more details.

VI Java API Hits 12,000 download milestone
Jan 27, 2011

Today we hit the 12,000 download milestone.

Welcome HP to VI Java API Community
Jan 12, 2011

The world's largest technology company HP officially joined our community. Check out this blog for more details.

vSphere Java API Exceeds 11,000 Downloads
Nov 23, 2010

Happy Thanksgiving everyone!

vSphere Java API Exceeds 10,000 Downloads
Oct 6, 2010

Check out this blog for more details.

vSphere Java API 3.0 Kicks off, code name "Crescendo"
August 26, 2010

Check out this blog for future directions of vSphere Java API, the theme of Crescendo release.

Announcing vShere Java API 2.1 GA Release
August 25, 2010

Check out this blog for more details. Please feel free to download it here

9,000 downloads today
Aug 19, 2010

Today we hit 9,000 downloads total. Check all the stats here. The API 2.1 beta seems doing well on track. I will GA it before VMworld.

VMware Technology Exchange for Developers @ VMworld
July 28, 2010

The event will be in San Francisco from August 30 to September 1. Great opportunity to learn VMware SDKs/APIs, meet VMware engineers, network with other professionals. More detail here.

vShere Java API 2.1 Beta Released
July 15, 2010

Check out this blog for more details.

Also, have you done the survey yet? If not yet, please help here.

VMware Wants to Hear from You about vShere Java API
July 1, 2010

VMware launches an official survey on the open source vSphere(VI) Java API. Please let us know your take on the open source project, and what you want, for example, formal developer support, etc.

The survey should take no more than 3 minutes to finish. All the collected information is confidential. Note that the survey result decides what to come next. Please make sure your voice heard by taking the survey here.

vSphere Java API 2.1 Beta Is Ready For Limited Access
June 29, 2010

For more information and how to get it, check out this blog.

8,000 downloads today
June 29, 2010

Today we hit another 1,000 download milestone - 8,000 downloads total. Check all the stats here.

Celebrating 2nd Anniversary!
May 22, 2010

Today is the birthday of this vSphere Java. Check out this blog: Innovation, Openness, Community: Celebrating 2nd Anniversary of vSphere Java API. Big thanks to all who have made the API a huge success for VMware community.

7,000 downloads today
May 6, 2010

Today we hit another 1,000 download milestone - 7,000 downloads total - since last one on March 12. This is the fastest period for 1000 downloads.

Several major contributors to the acceleration:

  • My presentation on the API was featured at InfoQ, and attracted many developers to try the API.
  • VI (vSphere) Java API was featured at VMware Labs.
  • Several folks like Aaron Sweemer blogged about the API.

Recorded Presentation on vSphere Java API Released at InfoQ
April 8, 2010

InfoQ.com released my presenation of last year's SpringOne conference. It has both video and slides for more than one hour. The voice was not quite clear in the first one or two minutes. After that it's pretty good.

This presenation is a complete overview of the open source vSphere Java API. Because the audience then was new to virtualization, the first several minutes covered a little virtualization basics. You can scroll over if you know virtualization already.

Also check out my blog on the little story behind the presenation.

6,000 downloads today
Mar 12, 2010

Today we hit another 1,000 download milestone - 6,000 downloads total - since last one on Jan 8th. Two majoy things that happened in this period of time accelerated the adoption.

  • A new blog site was created for better interaction with the community. Also, I started to use Twitter. Please feel free to sign up and follow me.
  • VI (vSphere) Java API was selected as one of the first 10 projects featured in VMware Labs. Please take a moment to vote 5 star for vSphere Java API here with one mouse click. Optionally you can leave a comment there.

Vote for VI Java API at VMware Labs
Mar 8, 2010

VMware announced VMware Labs today. I am glad that VI (vSphere) Java API is one of the first 10 projects featured there.

Like other labs, VMware Labs is a great way for the company especially R&D team to know what user and developer communities like. So it's important to exercise your influence by voting for the projects you like. If many folks like a particular project, it's possible that the project becomes a product officially supported by the company in the future.

Please take a moment to vote 5 star for vSphere Java API here.

Act and Win $2,500 in VMware Script Contest!
Feb 4, 2010

VMware has announced VMware Script-O-Mania contest. Check out this post for details of the contest and how VI Java API can help you to win the prize.

Add your wishlist for the next release plan
Jan 26, 2009

Just blogged an initial plan for what to expect in next release. Please share your thoughts and add your wishlist there. Your feedbacks are important for the direction of the project.

Please feel free to subscribe or follow me for updates on the progress.

Announcing new blog site and twitter account
Jan 21, 2010

One of my goals this year is to build a more interactive community around the API. After trying the WordPress provided by sourceforge, I decided to start a new blog site: http://www.doublecloud.org. I will start blogging on a regular basis. You can sign up the blog feed for lastest developments and technical insights. Also, don't forget to leave your comments there.

Also, we cannot get away from the micro blogging. I also created my Twitter account: @sjin2008. To follow me, just click the "Follow" button on the right sidebar after the twitter icon. It will connect to Twitter and create the connection after you login your own account.

From now, I will use the new blog site and the Twitter to share insights of the project, and interact with the community. Please feel free to sign up the blog feed and follow me. All other infrastructures like this site, SVN, forum, track remain the same.

5,000 downloads & blog on future direction
Jan 08, 2010

Happy new year everyone!

Today, we surpassed 5,000 downloads. This is an important milestone for the project as it indicates the adoption of this powerful yet easy-to-use API has reached a new level.

Moving forward, the API will continue to evolve with new vSphere releases.We will also do something more. Here is my first blog after it's set up since the end of last year. Please leave your comments there.

vSphere Java API 2.0 update 1 released
Dec 5, 2009

It's almost 6 months since 2.0 was released on June 25. The community was thrilled by the dramatic performance boost with the new Just Enough Web Services Engine I wrote for VIM API. Some developers told me their applications run 15 times, not percent, faster than before.

Although some people told me they didn't find any bug (Thanks for the confidence in the API!), we do have bugs. There were about 10+ bugs reported or found by myself. These bugs were fixed immediately, normally within 24 hours after being reported. Depending on how you use the API, you mostly don't hit any of the bugs. Therefore, the fixes went to the subversion right away so that you can grab them as needed, but I didn't hurry up for a new release. Now they accumulate enough for an update release:

  • 2814793 ClassCastException in XmlGen.java
  • 2819624 Caching: NPE occurs repeatedly in watcher thread
  • 2823427 customize vm causes cast error in XmlGen.toXML()
  • 2825430 DistributedVirtualSwitch#getSummary() has incorrect impl
  • 2825433 ResourcePools occasionally returned as VirtualApps
  • 2837427 AddDVPortgroup_Task should return a Task object
  • 2837428 moveDVPort_Task should return a Task object
  • 2839209 Caching: Flood of exceptions when authentication fails
  • 2840733 HostPatchManager.uninstallHostPatch_Task() is missing
  • 2898611 HostProfile.updateHostProfile() should return ProfileExecute
  • 2903501 NullPointerException when call findAllByUuid
  • 2907215 Missing network traveral in PropertyCollectorUtil.java

For the first time, VI Java API includes contribution code from outside VMware: Eric Forgette from NetApp provided code for my deprecated code in Task.java; Elsa Bigonoli from Altor Networks contributed a patch on the full traversal spec for Network, which becomes a ManagedEntity in vSphere 4. Thank you Eric and Elsa for your great works. For users, no worry about the license -- all contributions under BSD license. For the best quality of the API, we've been pretty selective on contributions, but we always welcome more contributions.

Last but not least, I would like to thank my colleague Lu, from VMware ESX automatation framework team, who kindly helped to QA this release. Her email to me said, "Ship it!" which was just done.

Top 5 Reasons to Attend Technology Exchange (Feb 8-11, Las Vegas,2010)
Dec 3, 2009

  • Get Exclusive Content Designed for ISV/IHV/OEM Partners.
  • Learn about Enhanced Program Benefits.
  • Expanded Focus as Part of Partner Exchange.
  • Interact with VMware Product Managers, Engineers and Resellers.
  • Receive free Software and Other Discounts. All registered attendees will get a complementary 1-yr developer license for a 2-CPU VMware vSphere Standard product. In addition, attendees will have the chance to take complimentary VCP Prep and other classes and training. In total, a more than $3,000 value.

Register Now and Save

DIY PaaS made possible with VI Java API and CloudTools
Nov 23, 2009

As mentioned earlier, VI Java API was leveraged at VMWorld 2009 Keynote demos. Now I got legal approval and contributed the related adapters to CloudTools code hosted at Google.

The CloudTools/CloudFoudry was originally designed for EC2. The CloudTools is open source; the CloudFoudry is not. With our contributed code, you can run CloudTools with vSphere for deploying your Java (Groovy) based web applications to your internal cloud. It offers both Maven and Grails plugins so you can do all the deployment with one line of command. Even better, you can integrate the plugin command with Spring Tools Suite (STS) and have a context menu in the Eclispe based IDE. This is what I call DIY PaaS (Do It Yourself Platform as a Service): vSphere + VI Java API + adapter + CloudTools.

The vCloud adapter was designed with Terremark vCloudExpress platform for the SpringOne 2GX keynote demo. The adapter does not use the VI Java API, but leverages the vCloud REST API. Besides the basic part, the Terremark vCloud API provides extensions for managing the network like public IP, InternetService, and node.

Although you see two different adapters, the user experiences are the same. Both adapters implement the required interfaces defined by CloudTools. Technically it's not a big deal, but business wise, it is a big deal -- you can seamlessly deploy to private (vSphere) cloud and public (service providers like Terremark) cloud, whatever best suits your needs.

For more details, check out the CloudTools project home.

vSphere 4 New API: Import and Export OVF packages
Nov 7, 2009

One of VMware community members recently sent me an email for samples of using OvfManager APIs. I just took some time to write two samples illustrating how to use them:

First, ExportOvfToLocal.java. This sample shows how to download either a VM or vApp to your local machine. The typical flow is:

  • Find the VM or vApp
  • Call their exportVm() or exportVApp() methods and get HttpNfcLease
  • Set lease time out
  • Wait for HttpNfcLease until it's ready
  • From the HttpNfcLease.info property, find the all URLs from which you download the vmdk files
  • Call OvfManager.createDescriptor() API to create the content of ovf and save it to a file along with downloaded vmdk files.
  • Release the lease by calling httpNfcLeaseComplete() method

Second, ImportLocalOvfVApp.java. This sample shows how to upload a VM or vApp. The flow is as follows:

  • Read in the *.ovf file and call OvfManager().createImportSpec() method
  • From a ResoucePool, call its importVApp() method() and get HttpNfcLease object
  • Wait until the lease is ready
  • Upload the vmdk files using the URL provided by the lease object
  • Release the lease by calling httpNfcLeaseComplete() method

While you are downloading or uploading the files, you would also like to update the progress with the httpNfcLease.httpNfcLeaseProgress() API. This is done perionically in a separeate thread with both samples.

You may have noticed that you can import an OVF package from a URL using vSphere Client. How to implement it using the API? Easy. Insteading of reading from a local file, you read from the URL. I leave it to you to try out.

For more details, check out the code samples - they tell all the details. I have tested both samples in a round trip: export a VM to a local disk, and then import it back. The imported VM works well.

Presentation on VI Java API at SpringOne conference uploaded
October 27, 2009

I presented the VI Java API at SpringOne 2GX conference in New Orleans. Here is the presnetation slides which cover all the basics of the VI Java API and advanced features in version 2.0 like Just Enough Web Service Engine, Client REST API, etc. Check it out here.

The presentation was video recorded and will be posted once it's ready later.

Yet another milestone - 4,000 downloads
October 19, 2009

We surpassed 4,000 downloads today. I will talk about the API at SpringOne 2GX conference in New Orleans this coming Wednesday. The presentation slides and likely the recored video will be posted after the event. So stay tuned...

Announcing Jython Virtual Appliance (Lite) for vSphere Management
October 15, 2009

I am very happy to announce the 1.0 of the Jython Virtual Appliance based on Ubuntu. It's made available by our community member Timo Sugliani. Great job Timo!

To run the virtual appliance, you will need either VMware Workstation, VMware Server or VMware Player. The later two are free products from VMware Download Site.

After compressed to RAR format, the virtual appliance is about 600M. After downloading the virtual appliance here, you can uncompress it to a folder using free 7-Zip or other tools. Double chicking the .vmx file will bring up the Virtual Applicance. The initial username/password is vijava/vijava. You can and should change your credential after first login.

In the home directory in the virtual appliance, there is an existing jython sample code. You can open it with any editor. My recommendation is vim which can highlight the syntax with different colors.

The sample code is really simple, it iterates through the hosts and virtual machines, and print out related information. It doesn't run as it is because it doesn't know your target server (ESX/VC/VMware Server 2.0+) host name or IP address, and username/password. All you need to do is to replace the XXX strings in one line of the sample code to match your environment. When you are done, just run it:

$jython testjython.py

This release is really to test water. It doesn't come with any GUI so that it can be as small as possible. We would love to hear from you what other components you would like to see in the appliance. We plan to build a professional edition which includes more handy tools. Please let us know your feedbacks, thoughts, and suggestions. You can leave your message at the VI Java API forum. You are also welcome to contribute samples that we can include in future releases.

What do experts say about the VI Java API? Check out the testimonials
September 22, 2009

While working on the VI Java API, I got many inquiries from new users on references. They concern mainly about the API quality, support, and licenses before developing products/projects on the API. Not much about the ease of use and cleanness of the API because the samples tell everything there.

Thanks to the user community, I just compiled a page with testimonials by CTO, VP Engineering, Engineers, Developers, Consultants, Quality Engineers from companies like EMC, NetApp, Salesforce, TripWire, Hyperic, Splunk, HyTrust, Reflex, 4Base, ICT, and of course VMware (We use it too!). As James Burke pointed out, "It (VI Java API) is a must-have for anyone interested in Java development with VMware vSphere."

Please check out the testimonial page to hear what experts say about the quality, performance, user-friendliness, the community support, and the business value the API brings to their businesses.

Although we've got the first edition of testimonials online, if you want to share your experience with the rest of the community, please let me know. We will continue to add new testimonials.

As a side note, this is an open source project sponsored by VMware, not a VMware product. The support is only through the community which has been "incredibly responsive" from day one.

VI Java API in VMworld 2009
September 17, 2009

In the last two months, I was quite busy with porting the CloudTools to vSphere. The project made its way into both keynotes at VMworld 2009 in San Francisco:

If you haven't watched the keynotes and demos, it's time to do so. You will find out how easy it it to deploy a Java based web app into VMware cloud. Of course you don't see the API, but it's the power behind the scene.

In the exbihition hall, I talked to many companies and developers who use the VI Java API. Some of them also showed me their products/demos built on top of the API. Maybe we should have a "PoweredByViJavaAPI" page for companies to show off their products built on top of the API.

A while ago, I called for testimonials from the community. I received many testimonials and will create a new testimonial page very soon. If you have any experience to share with the community, I would be more than happy to include it in the testimonial page.

We hit 3,000 download milestone today
July 15, 2009

Three months ago on April 11, we hit 2K download milestone. Today we hit yet another 1K milestone.

Here are some basic statistics about the project as of today:

For more and up to date statistics, you can subscribe this feed. The link is also listed in the home page (http://vijava.sf.net) after Project News.

vSphere (VI) Java API 2.0 GA released
June 25, 2009

I am very pleased to announce general availability of VI (VSphere) Java API 2.0 today. The 2.0 release represents 6 months of continuous (spare time) engineering effort since this January. It has packed many features:

  • New high performance web service engine. When I told people that we replaced AXIS, most of them wanted me to confirm what I said. The new engine is 15X times faster in loading, 4+X in de-serialization than AXIS 1.4 with only 1/4 of size.
  • vSphere 4 support.
  • REST client API.
  • Caching framework API.
  • Multiple version support with single set of APIs.
  • Clean licenses. The API and dependent dom4j are all BSD licenses.

This GA release fixed the following bugs. Many thanks to my colleagues Veronika Fleisher, Daniel Parrella and Gavin Gray for final QA for this GA release.

  • 2795610 NoSuchFieldException on EventManager.queryEvents. Thanks to Hai Nguyen.
  • 2798429 Caching: NPE occurs if a watched entity's value is null. Thanks to James Burke.
  • 2800694 overwriteCustomizationSpec should not take a String. Thanks to Gavin Gray.
  • 2810870 XmlGen.java does not compile with JDK6U13 or later. Thanks to George Costea.
  • 2811320 Method back compatibility. Thanks to Joe Zeppy for his question on the forum that reminded me of this bug.

I would like to thank all the community for the support/help. During 2.0 development, 47 bugs were reported and 45 of them are fixed/closed.

Moving forward, we are planning the new features of 3.0. Please let me know what you want from the API by filing feature requests here.

vSphere 4 support is here
May 22, 2009

The same day a year ago, I released the first version of VI Java API. It's been downloaded for 2,300+ copies (not including VMware internal downloads) and used widely since then.

Today, I am pleased to announce another important milestone -- the vSphere 4 support with VI Java 2 Beta 3 ( With the name change of VI to vSphere, should we change the API to vSphere Java API as well?).

As you will find out, it has 20+ more managed object types and many more data object types. The way how it works remains the same. All you need to do is to get familiar with the additional classes and methods.

To patch the interface changes (about 10 methods), VI Java API adds additional shorthand methods. So your existing application runs as it is using VI Java API.

I plan to GA the VI Java 2.0 in a month. Please give beta 3 a try and help to file bugs.

Introducing VI Java Caching Framework
May 8, 2009

It's been a month since the 2.0 beta 2 update 2 was released. I haven't received any critical bug for one month. The API especially the web service engine is now stable.

This new 2.0 beta 2 update 3 is mainly about a new experimental feature - the caching framework. It not only caches the content, but also watches the changes on the server side for you. If you want to develop a large scale application, this feature is what you want. Check out this sample code to find out how to use it

Same as the rest of the API, you will find it very easy to use. Please let me know how you like the caching framework and how you would like to improve it.

Also included in this release is a fix to the following bug:

2785235 searchManagedEntity() fails on empty managed entity

I am considering to add two new pages on project home:

  • List of the products/projects/companies who use the VI Java API.
  • Users' testimonials. Tell us your sucess story.

Please let me (sjin at vmware.com) know if you or your company is interested to leverage this opportunity.


VI Java API supports vSphere 4
April 25, 2009

On April 21, VMware launched vSphere 4 -- the industry's first Cloud Computing System. It was a great event with a lot of media coverages.

Coming with vSphere 4 is the vSphere SDK. We are ready to support it. The internal version of the API has been tested against the latest vSphere SDK. Once vSphere GAs, we will release the new API so that you can start to leverage the new features of vSphere 4.

Stay tuned...Please sign up the RSS feed for notification.

2,004 Downloads as of April 11, 2009
April 11, 2009

As of today (April 11, 2009), VI Java API has got 2,004 downloads. Quite an acceleration of adoption since 2.0 Beta was released in Feb. For the first 1,000 download milestone, it took about 8 months; for the second 1,000 downloads, it only took about 3 months even though 2.0 still in Beta. I expect it will take even less time for the next 1,000 downloads after 2.0 GAs.

After two beta releases and several updates, the VIJ is now stabilized, and also optimized. We don't have critical bugs on the project tracker now. Although the first beta outperforms AXIS several times, the latest beta 2 u2 is two times faster than the first beta. One of the developers told me he observed 10+ speed improvement in his application.

Other major technical benefits include:

  • The code size is much smaller: 1/5 of AXIS 1.4, and 1/40 of AXIS 2. Yes, you read it correctly. It is 1 to 40 in size compared with AXIS 2.
  • VIJ 2.0 works for all the versions of VI, despite their namespace difference. If your application has to work with multiple version of targets, the space saving is even more -- as high as 1: 120.

Business wise, the VI Java API license is very clean. The API itself and the dependent dom4j are all coming with BSD type license, one of the most lenient license types. You can redistribute them with your application with a peace of mind. This is critical for ISVs -- you don't want your customers to download and configure AXIS after installing your software.

Behind the success of the VI Java API project is an active community. I would like to thank everyone in the community who provided suggestions, tried the API, filed the bugs, promoted the API and helped others to use the API in various forums.

Looking into future, we need your help to share success stories with others so that more people in the VMware community can leverage the power of VI Java API.

VI Java API 2.0 Beta 2 update 2 released
April 6, 2009

This update release fixes the following two bugs:

  • 2738911 IllegalArgumentException from retrieveObjectProperties()
  • 2738959 InvalidLogin should be throw from login method

Many thanks to the folks who reported/filed the above bugs: Andrew(Hyper9), Steve Strassmann, Gavin Gray(VMware), and one anonymous user (turned out to be Brian McFeely from TripWire, 2738911) who not only correctly analyzed the root cause, but also provided a quick fix.

Bug 2738911 causes an application fail after calling the retrieveObjectProperties() for about 200 times. Since this method is used by many getters, you might easily get into this problem. That is why it's an urgent update.

To get notified about future releases and project news, please sign up project RSS feed.

Steve Jin

VI Java API 2.0 Beta 2 update 1 released
April 4, 2009

A new update to the VI Java API 2.0 beta 2 was just released to fix the following bugs:

  • 2710085 Unable to serialize java.lang.Byte
  • 2717348 issue with queryPerfCounter() call
  • 2721464 Issue with returning Calendar
  • 2722374 Issue with returning ManagedObjectReference[]
  • 2722381 issue with multiple XML parsing
  • 2726014 issue with findExtension method when none found
  • 2726016 issue with methods returning ManagedObjectReference[]
  • 2726018 Error with configureLicenseSource

Many thanks to the folks who reported/filed the above bugs: George Costea, Eric Forgette (NetApp), Daniel Parrella (VMware), and two anonymous users (2717348, 2721464)

The big thing of this release is another round of refactoring and optimization. For the same test application we tried with beta 2, it now takes 0.840s -- 0.05s reduction from the beta 2. Taking away the time spent on the server side, it's 0.120s vs 0.170s. Quite a good result!

So what changes got us this result?

First of all, the class type caching is added. Previously we call Class.forName() for every data object types in the com.vmware.vim25 package. Now it's called only once and placed into a HashMap object.

Secondly, remove un-necessary object instantiation. For example, I used to have a method to create an ArrayList object for all the elements which has the same tags. This method is changed to return only the number of the same tags.

Thirdly, change the string comparison to the type comparison. For example, I used to compare the object's type name to "ManagedObjectReference." We now just check with the following:

fRealType == ManagedObjectReference.class

Last, but not least, I start to use parallel garbage collector in the testing. All needed is to add the following option to the command: -XX:+UseParallelGC

If you run your application with Eclipse, you can go to the "Run" dialog, click on the "Arguments" tab and add the above in the "VM arguments."

The parallel GC made a big difference with the test application, which retrieves properties from 51 managed objects for 60 times. In each retrieval, a lot of objects get created -- DOM objects after the initial parsing, the data objects for all the properties.

To get notified about future releases and project news, please sign up project RSS feed.

Steve Jin

VI Java API 2.0 hits Beta 2 milestone
Mar 21, 2009

After the beta one and three updates therefore, we finally hit Beta 2 which includes all the fixes to the bugs the community has reported. It's now stable than ever. We're on track to GA release synchronized with next major VI SDK release.

In addition, beta 2 has moderate performance improvement and fixed following bugs:

  • 2692371 OptionManager#getSetting() fails -- a typo in property name
  • 2692265 Update readme with latest information
  • 2690376 Incorrect serialization of Calendar if first level object
  • 2689088 Using streaming feature in parsing XML
  • 2688913 Typo in the VIM20 namespace
  • 2685661 si.invoke("currentTime") does not return valid result. Note: the client REST API behind this bug is experimental.

Many thanks to the folks who reported/filed the above bugs: Brian McFeely (TripWire), Andrew Kutz (Hyper9), soyuppy, Kem, Trak Marba.

The big thing of this release is the optimization of the web service engine, mainly leveraging the streaming feature of the XML parser. So don't be surprised to notice the performance improvement.

In my test application which grabs all the properties of 50 managed objects, it takes about 0.930s on average of 60 times with beta 1. With this beta 2, it takes about 0.890s. From its face value, it's not big deal. But when breaking down the time, I find it's not bad at all.

In both cases, about 0.720s is spent on waiting for the server. So the real time on the client side is about 0.210s (b1) vs 0.170 (b2). Among them, about 0.094 is spent on XmlGen. So b1 takes about 0.106s to read SOAP response message, manipulate the string, and then parse the XML; b2 takes about 0.66 to read and parse.

Why is b2 faster? Instead of receiving the whole SOAP return as a string, b2 now hooks the InputStream to the dom4j parser directly. Therefore the parser can work in parallel while waiting for more data from the server. Essentially we get the XML parsing almost for free.

To download, visit here

To get notified about future releases and project news, please sign up project RSS feed.

Steve Jin

VI Java API 2.0 Beta Update 3 released
Mar 7, 2009

A new update to the VI Java API 2.0 beta was just released to fix the following bugs:

  • 2671806 Need a method to specify the namespace of a target
  • 2665725 createSnapshot_Task(...).waitForMe() throws RemoteException
  • 2663642 PerformanceManager.queryPerf fails with Exception
  • 2657981 Task.waitForMe should throw appropriate MethodFault
  • 2657952 HostSystem.reconnectHost does not follow "_task" convention
  • 2655705 WSClient.invoke attempts to instantiate enum
  • 2646499 Task.waitForMe prints stack trace output from MethodFault
  • 2639448 OptionManager.updateOptions() does not work
  • 2639433 The searchDatastore_Task() returns null

Many thanks to the folks who reported/filed bugs: David Kelly(NetApp), James Burke (NetApp), Steve Strassmann(VMware), Garvin Gray(VMware), Daniel Parrella (VMware), Ryan Stokes, HiepFirescope(VMware Community ID), Andrew Kutz(Hyper9).

To download, visit here. The more we use the API, the more stable it will be. I am committed to make it the best of its kind.

BTW, the API was used in the vCloud demo of VMware CTO Steve Herrod's keynote at VMworld Europe 2009. Check it out here

To get notified about future releases and project news, please sign up project RSS feed.

Steve Jin

2.0 accelerates the adoption of the API
Feb 27, 2009

As of today, the project summary feed shows 1,500 downloads, quite a boost from last year which saw 1,025 downloads in 8 months. The newly released 2.0 brought in much needed performance boost, and the legal cleaness. All the code in 2.0 are under BSD type of licenses, which are great for the ISVs to freely redistribute the API with their applications written on top of 2.0. The user experience can therefore be much better. You don't want to ask your users, and they don't want neither, to download another package and configure it after your application is installed.

Currently 2.0 is still in beta, please help to give it a try and file bugs with the project tracker.

Steve Jin

VI Java API 2.0 Beta Update 2 released
Feb 21, 2009

An update to the VI Java API 2.0 beta update 1 was released to fix the following two bugs:

  • 2625999 Typo in a method name of TaskManager
  • 2626003 Null is returned for the existing Multipath policy

To download, visit here. The old beta update 1 was taken offline.

To get notified about future releases and project news, please sign up project RSS feed.

Steve Jin

VI Java API 2.0 Beta Update 1 released
Feb 14, 2009

An update to the VI Java API 2.0 beta was released to fix the following two bugs:

  • 2597336 Error is serializaation enumeration data type
  • 2596689 Error in serializing Calendar data type into XML

If you use a method whose parameters include either Calendar type or enumeration type and you happen to use them, you are affected. Please download this update. Visit here. The old beta was taken offline.

Steve Jin

VI Java API 2.0 Beta released
Feb 05, 2009

I am very pleased to announce the VI Java API 2.0 Beta. It comes with many feastures and improvements as follows:

  • High performance Web Service Engine to replace AXIS. It's about 15 times faster in loading the library, and 4+ faster in serialization/deserialization than AXIS.
  • Much smaller size of libraries, 1/5 of what is required using AXIS.
  • POJO Data Objects and Java Enum Types.
  • REST Client API. It's a super light weighted library.
  • Updated samples using the APIs.
  • Multiple version support with same library.
  • Easy access the SOAP response, allowing further performance optimization for demanding applications.

To download the binary and source code, click here Given the increased size, the binary (.zip) and source (.jar) are packaged separately for the first time.The binary also include the dom4j 1.6.1 binary. That is the only 3rd party you will need. No AXIS anymore!

The VI Java API interfaces do not change, so the applications still work. Since Java enum type is used for XML enumeration types, the related code to access these types may need to be updated. Check out the samples to find more.

Steve Jin, Creator of VI Java API

VI Java API 1.0U1 released
Jan 26, 2009

This minor release fixes several bugs reported by the community, and includes one more sample code.

    The bugs addressed are:
  • 2538326 NPE with PropertyCollectorUtil multi-properties. Check out the MultiProperties.java in the sample folder on how to tell a null value in the Hashtable returned from retrieveProperties() method
  • 2488659 NoSuchMethodException while calling getEffectiveRole() on VM.
  • 2188735 Tries to instantiate abstract classes.

To download the latest, click here

1,025 downloads in 2008
Dec 31, 2008

Since its debut in May 2008, VI Java API has quickly caught the attention of VMware developer communities due to its elegant design and simplicity. As I know, many commercial companies use it for their product development and really enjoy the benefits the API brings in.

Accoding to the project statistics, it hit the 1,000 download milestone days ago. As of today, the total number of direct download is 1,025.

Many thanks for your support and I look forward to bringing you more features in 2009!

Happy New Year!

Steve Jin, Creator of VI Java API

VI Java API 1.0 is ready to download!
October, 2008

Five months after the first release, we are glad to announce the version 1.0 is ready for you to download. Besides bug fixes, we also added more support on retrieving multiple properties from single or multiple managed objects. You can find out how to use by reading a new sample code MultiProperties.java.

You can download the 1.0 release and start playing with it. Please let us know any bug and what else you want for future releases by filling out a tracker item.

VMWorld 2008
September, 2008

VMWorld took place in Las Vegas with record 14,000+ people in the industry event. Register here for two VMWorld keynote speeches by Paul Maritz (CEO) and Steve Herrod (CTO).

Programming Jython with VI Java
July, 2008

Jython looks very much like Python. If you know how to program Python, you pretty much know how to code in Jython.

With the VI Java API, it's made possible to manage VMware Infrastructure with Jython. Please check out this presentation to get started with Jython programming.

More samples released
July, 2008

There are 18 more samples released into the project depository including networking, scheduling, virtual machine management, session management, event management. Please check them out here .

Welcome Schley Andrew Kutz
June, 2008

I'm very pleased to introduce Andrew, who recently joined our open source project. Andrew has been very active in VMware developer community and is now VMware valued community member. He has done many great projects in VI plugin, VI SDK, etc. His postings are among the most viewed by the VMware community. To know more about him, please take a look at the VMware community blog by Pablo Roesch.

Andrew has decided to combine his VI Java toolkit into VI Java API project. He will help with the devleopment of VI Java API project.

Please join me to welcome Andrew on board!

-Steve Jin

Announcing Virtual Infrastructure Java API
May, 2008

The Virtual Infrastructure API just got open sourced under BSD license. This API aims to simplify the VI SDK web services interface and improve productivity.

The key benefits include:

  • Enables OO programming with a well defined managed object model
  • Reduces the need to use ManagedObjectReference
  • Hides the complexity of the PropertyCollector
  • Provides necessary utility classes to simplify VI SDK web interfaces
  • Leverages current VI SDK web services interface while keeping it intact

The downloadable jar you will find in the download page is very small (264KB ompressed), but includes binary, source and 10 sample code.

To find out more about this API and the object model behind it, please check out these two documents: Get started with VI Java API (2 pages),and Object model of VI Java API (3 pages)

To download the API package, please start here and choose latest build. This project is an open source project, please feel free to leverage this API and share your experience with the rest of community.

We look forward to hearing from you. If you would like to help with the API development itself, please let us know and we will love to have you.