Friday Jan 05, 2007

NET2Java goes Open Source

I've gone open source crazy for 2007. Off my New Year trolley. Its an epiphany for NET2Java !

A while back you will no doubt remember I started a new project on called NET2Java. A humble new technology I created that, you know, translates any .NET application into Java source code.  Supporting VisualBasic. And C#. And an extensible library of translation files to make it easy for anyone to share their translations of .NET API calls. 

And a plugin for NetBeans.

Since then I have had a number of notes from various people who downloaded it. Some curious, trying it out. Some having problems. A few using it on real projects. One using it for some eye-wateringly large .NET applications. (My eyes teared up at the thought of all those lines of C# turning into lines of Java code, Grimm's miller would be proud). Someone has even mentioned creating an Eclipse plugin. I guess they all liked the before and afters.

But as you know, my day job is as platform lead for Java SE, and so I was becoming a bottleneck for progress of the technology. So I decided it was time to stop being the spider at the center of the web, and I've gone and open sourced it !

I'm licensing it under GPLv2, and I've worked out the governance rules of the project (my house rules).

Take a look. Maybe you'd even like to help out.

And if you have a friend struggling with .NET (so nineties), do let them know there is an exit strategy.

<script type="text/javascript" language="javascript"> var sc_project=2166929; var sc_invisible=1; var sc_partition=19; var sc_security="42d2aa8e"; </script> <script type="text/javascript" language="javascript" src=""></script>

Thursday Jun 01, 2006

Tango, Semplice and NET2Java

I contend Java and .NET are the Pepsi and Coke of development platforms today in terms of popularity. (No implied order...)

I've puzzled before about the lack of good tools that let people act on their own conclusions on the Pepsi Challenge equivalent for development platforms. That infamous marketing campaign has a fascinating history and folklore. But for Java and .NET, where are the tools and technologies that let them intermix the two or migrate skills or applications from one platform to the other ?

No sooner did I scratch my head than we are awash with fascinating Java / .NET projects. I should scratch more often ! Since I have had a number of questions in this area, I'll outline three new projects so you can see what they are, what they're good for and where they're at.

Project Tango: Java and .NET Web Service Interoperability

Tango is for intermixing Java and .NET (C# or Visual Basic) applications, using web services as the boundary. Its for developers working on one development platform (Java or .NET) to be able to interoperate with applications written for the other.

Tango is very unlike the bitter cola wars, because Sun and Microsoft engineers have been working together to make sure that the Java web services stack and the .NET web services stack interoperate. If you thought reading the ingredients on the side of a can of Coke or Pepsi was scary, check out the ingredients list on the side of a stack of web services. But for the normal, the upshot is that the Tango joint interoperability work ensures that messages produced on one side are comprehensible to the other, that the description of a web service on one side is comprehensible to the other, that one side respects the security guaranteed by the other, and the both sides agree on the quality of service guaranteed by the other. All very reassuring if you're managing inventory in a heterogeneous environment, for example.

The Tango engineers are well underway in Glassfish. Here's how to get it.

Project Semplice: Visual Basic for the Java Platform

Semplice is for developers who like the Visual Basic language and want to develop on the Java platform. If you are one of them, you may be a developer already familiar with Visual Basic, or perhaps you're a Java developers attracted to some of the Visual Basic language features.

(I'm with Miss Jean Brodie on the more sugary Visual Basic language features: "For those who like that sort of thing, that is the sort of thing they like".)

At the heart of this early stage technology, is a Visual Basic to Java-bytecode compiler. No small feat, since many of the language constructs in the CLR do not map cleanly onto the Java VM. Semplice also supports VB6 (bringing joy to the disenchanted ?) which has some very un-Java like constructs. I predict that Semplice is going to be most at home when tightly integrated with its development environment Java Studio Creator, which takes care of much of the heavy lifting, leaving the developer to fill in the corners with short bursts of application logic.

Tor demoed this to great success at JavaOne, and I join him and Herbert in beseeching Jon Kline, one of the other team members, to get a blog :-)

NET2Java: Translating .NET source code into Java source code

NET2Java is a .NET (C# or Visual Basic) source to Java source code translation technology. So this is for .NET developers who have already taken the taste challenge and have decided to move their work to the Java platform.

Developed by yours truly, and also in early stage of development, this technology includes language parsers for VB.NET and C#, together with an extensible library of .NET API call to Java API call translations. The ambitious part of this technology is to complete the library, which will require many hands, and is why I made it available recently. There's a NET2Java plugin for NetBeans that integrates it with the IDE so developers can easily switch IDEs while they're switching platforms.

So there you have it, three projects, three technologies, three different goals.

Oh, and by the way, here's the latest on the cola wars.

<script type="text/javascript" language="javascript"> var sc_project=1610688; var sc_invisible=1; var sc_partition=15; var sc_security="bc79f7f0"; </script> <script type="text/javascript" language="javascript" src=""></script>

Monday May 08, 2006

NET2Java: Extreme Makeovers for .NET Applications !

My secret agenda is to translate every .NET program on the planet into a Java program. So I'm announcing early access to NET2Java: a new technology for translating .NET applications into Java applications that behave the same way. It translates .NET source code into Java source code.

I've blogged before about the need for this, as has Charles. So for now I'll just tell you a few highlights:

NET2Java translates applications written either in Visual Basic or in C#, 2003 or 2005 editions.
Ya, that much source code.
NET2Java creates readable Java source code; e.g. it preserves class names, method names and code comments.
Because your applications don't stand still, they will evolve.
NET2Java uses the NET2Java Library to translate .NET API calls into Java Platform API calls.
Because .NET programs usually make lots of .NET platform API calls.
NET2Java doesn't sweat it when it encounters an unknown API call: it flags it for later and keeps on translating.
Because many of your .NET applications use custom components that I've never heard of.
NET2Java includes the NET2Java NetBeans Plugin to let you 'import' a .NET project into a NetBeans project.
Because I \*heart\* NetBeans.
NET2Java includes some homemade .NET samples for you to try translating.
Because the best way to understand it is to try it.
I've filled the NET2Java Library with enough translations to translate the samples, and a little more.
Because I haven't had time to fill up the NET2Java Library myself.
The NET2Java Library Editor makes it super easy to add translations to the NET2Java Library.
Because I want to make it easy for us to team together to fill up the NET2Java Library with a translation for every .NET API call.
I've had a lot of fun creating NET2Java.
And I think you might have fun too.
If you're interested in NET2Java, come help !
Because together we can translate all the .NET applications.

<script type="text/javascript" language="javascript"> var sc_project=1545530; var sc_invisible=1; var sc_partition=14; var sc_security="21c327f7"; </script> <script type="text/javascript" language="javascript" src=""></script>

Thursday Apr 27, 2006

Visual Basic, C# and Java

You know how when there are two leading and competing products A and B, and you see the companies that make them playing the switch-trick ? The company that makes product A guns for the people using product B and make it super easy for them to switch to product A ?

When I first came to the US (yes, I'm not from here), before landline telephone companies had major migraines like wireless and VOIP to deal with, the leading two providers, MCI WorldCom and AT&T used to spend a lot of time and effort poaching each other's customers. Like me. Aside from the free service for however long they would give you (from which some of my cannier friends would profit on a regular basis), one phone company would take care of the sanity eroding task of canceling your account with the other. No left-ear-numbing wait for customer service while destroying a piece of music for all time that you used to enjoy, like Handel's 'The Arrival of the Queen of Sheba' on infinite repeat, in anticipation of a half-hour interrogation as to why you wanted to change your account. Usually by someone who was audibly, emotionally and ceremonially not the Queen of Sheba.

Switch to Java ?

So what with most developers in the world programming either in Java or a .NET language like VisualBasic or C#, it makes me wonder: where are the clever tools or frameworks or experts to make easy transitions from one side to the other ? Sure there are tools here and there. Microsoft made it easy to transition off J++ into one of the other two, but that's of course not the same. (yet happily so for that village of developers, because there was a whole city that did not fare so well.)

Now you're not telling me that there aren't big companies with developers some of whom develop in .NET and some of whom develop in Java. J'accuse ! So don't they ever do lunch, and don't the Visual Basic or C# developers ever want to dip their toes into our wonderful world of Java and see what the hoopla is all about ?

Shameful Past ?

In fact, Charles has been trying to delve into who these people are and what's in their secret pasts. If that's you, go tell all your shameful secrets in his poll.

If those people do want to see how we Java programmers enjoy ourselves, they will find some tools to help them. But, and the valiant folks providing them I hope will forgive me for saying this, they are few, far between, not always terribly up to date, and unsurprisingly, given the titans of this industry don't support them well, limited in their ambitions.

Suspicions ?

I have several theories as to why this is. One of course is that there are many other factors that keep developers (and sometimes more importantly, the budget holders in their workplace) loyal to what they already know. So the pressure to migrate people backwards and forwards has to come from the top down; not always an effective strategy with independent minded developers with choices.

But really I think a lot of the problem is that automating the migration of applications from one platform to another is a very large and difficult task to do well in a general way. First of all the .NET and Java platforms are very, very broad. There are lots and lots of API calls that any single application could potentially make. So any kind of automation has to be ready for any one of them. Second of all, many applications use bespoke components that are not necessarily availble to this valiant group of people out there trying to support such migrations. So as specialized as these components are to one particular company or setting, equally specialized are the processes that would enable them to be migrated. Again, hard to get right for the general case.

Something to ponder on.

Until the Arrival of the Queen of Sheba ;-)

<script type="text/javascript" language="javascript"> var sc_project=1515385; var sc_invisible=1; var sc_partition=13; var sc_security="b819e73c"; </script> <script type="text/javascript" language="javascript" src=""></script>



« July 2016