Java with EMF & RCP vs C#

We’re thinking about switching technology for our future projects going from C++ to Java or C#. So naturally there’s a big discussion going on right now what to choose. The problem is that none of us has industry experience with EMF or RCP, which would be quite nice to have if it fits our needs.so i wanted …

via C Programming Language Tutorial » Search Results » ajax:

Java with EMF & RCP vs C#

We’re thinking about switching technology for our future projects going from C++ to Java or C#. So naturally there’s a big discussion going on right now what to choose. The problem is that none of us has industry experience with EMF or RCP, which would be quite nice to have if it fits our needs.
so i wanted to ask you what you would prefer. our program is:
gui heavy (lots of dialogs, properties)
quite big models (serialized xml takes up about 15mb right now)
application should be integrated into our framework-application-center
data format (xml and binary) has to be the same as our current format
graphical editing is needed (creating, moving, connecting shapes + editing their properties)
lots of similar but tiny different objects in data model
and the actual questions are:
is there an equivalent to EMF in C#?
is there an equivalent to RCP in C#? (e.g. commands to edit data model, gui frontend, …)
is the gui editing in RCP as good and flexible as with windows forms or WPF?
how rigid/flexible is EMF?
we’ve got lot’s of interdependencies between data models (some control others or allow different options on them) – how would you model these?
what of the options would you choose?
thanks very much for any advice or opinions
manni
…………………………………..

As Java developer I can’t say much about C#, but I can give you an overview about the Java side: There are sevaral good choices for RCP (the most prominent is of course Eclipse, but there are others as NetBeans). The learning curve is quite steep, but once you have the “hello world” running, it gets much easier. GUI-programming is no problem (you have several choices, and there exist a lot of free and commercial widgets), and you have several ways for dealing with XML. Generally for almost everything there is a (often free) lib. So if you like to have choices, Java is for you.
On the other hand the C# language is technically ahead. Java7 could decrease the gap, but won’t close it, that’s sure.
If you want to have both the advantages of the JVM (open, widespread, platform independent, plethora of libs…) and the advantages of a modern language, then you should have a look at Scala (you can mix Scala and Java code without problems). Scala is very innovative, mixing OO and functional features, but is still very “accessible” for programmers that are used to a C++/Java style syntax.
…………………………………..

For the bulk of the application I highly recommend Eclipse RCP + EMF (Eclipse RAP is also a plus as you can single source the application and get a web-based rich Ajax application “for free”).
If you need to access native features you can always write it in another language or use JNI, or implement a form of IPC or using web services (SOAP) or REST-JSON or DBus or whatever favorite communication mechanism you like.
I sometimes call Linux tools from my Java app to do the job (e.g. “ssh someserver” or “rsync”) and feel comfortable doing it. I don’t find it a pressing reason to get a “pure SSH library for Java” or “pure Rsync library for Java” when other tools do the job perfectly and I can get on with the next interesting task.
BTW although I am biased towards Eclipse and JVM (Note: Java language isn’t my favorite, I prefer Scala and Groovy, but with EMF it’s easier to work in Java language), I have some experience with .NET. While there are some good things about .NET (one is that C#’s superior over Java language, but that’s just about it, the second is Microsoft packs more functionality built-in than Sun/Oracle gives to Java[SE] API), there are some things you need to consider.
First is cross-platformness. While there is Mono, overall .NET is hard to port. While you may not have a need for this, it may come in handy. Besides, Eclipse RCP not only it is “more cross-platform” but it is superior to the out of the box functionality provided by .NET Framework. (I know it isn’t a fair comparison, it’s fairer to compare it with Visual Studio Shell)
Second is license, then tooling, and cost (makes three items). The whole Eclipse tooling is freely available. They are open source (you can fix any bug, contribute a patch). The license is open and you can rightly create commercial products on top of it.
Third is functionality. There are so much functionality inside RCP itself, when combined with EMF, other Eclipse projects and the rest of Java ecosystem (not to mention the JVM languages) you’ve a lot of options for basic functionality.
See also: http://eclipsedriven.blogspot.com
…………………………………..

I’m not familiar at all with EMF and RCP, but from what I gathered in a quick glance, there are cetainly ‘equivalents’ in .Net. However I’m heavily biased so don’t take my word for it.
There are tools from generating data classes from xml/xsd and vice-versa (xsd.exe), graphical integrated modeling tools inside Visual Studio etc.
And there is WPF, which I highly recommend for any project (not just graphical-heavy ones); the object model is easy to work with, it has declarative GUI design (XAML), and it makes diagramming-like tools (like what you described) a lot easier to make compared to older .Net technologies like WinForms. Especially look into MVVM (Model-View-ViewModel) for the most wide-spread pattern when working with WPF/Silverlight.

For more info: Java with EMF & RCP vs C#

C Programming Language Tutorial » Search Results » ajax

Java with EMF & RCP vs C#

Share this post:

Related Posts

Leave a Comment