Java with EMF and RCP vs. C #

We are thinking of switching technologies for our future projects, going from C ++ to Java or C #. Therefore, of course, now there is a big discussion about what to choose. The problem is that none of us has experience with EMF or RCP, which would be nice to have if it matched our needs.

so I wanted to ask you what you would prefer. our program:

  • gui heavy (many dialogs, properties)

  • fairly large models (serialized xml takes about 15mb right now)

  • the application should be integrated into our framework-application-center

  • data format (xml and binary) must match our current format

  • graphic editing is required (creating, moving, connecting shapes + editing their properties)

  • many similar but tiny different objects in the data model

and current issues:

  • Is there an equivalent EMF in C #?

  • Is there an RCP equivalent in C #? (e.g. commands for editing a data model, gui frontend, ...)

  • Is editing GUI in RCP good and flexible, like in Windows or WPF forms?

  • How stiff / flexible is EMF?

  • we have many interdependencies between data models (some control others or allow different options) - how would you model them?

  • What options would you choose?

Thanks so much for any advice or opinions.

Manni

+4
source share
3 answers

As a Java developer, I can't talk much about C #, but I can give you an overview of the Java side: there are several choices for RCP (the most notable of them is, of course, Eclipse, but there are others like NetBeans), Curve Learning is pretty cool, but as soon as you launch the "hello world", it gets a lot easier. GUI programming is not a problem (you have several options, and there are many free and commercial widgets), and you have several ways to work with XML. In general, for almost everything there is a (often free) lib. Therefore, if you like to choose, Java is for you.

C #, on the other hand, is technically ahead. Java7 can reduce the gap, but will not close it, which of course.

If you want to have both the advantages of the JVM (open, widespread, platform independent, many libs ...) and the advantages of the modern language, then you should take a look at Scala (you can mix Scala and Java code without any problems). Scala is very innovative, mixes OO and functionality, but is still very “accessible” to programmers who use C ++ / Java style syntax.

+4
source

I am not familiar with EMF and RCP at all, but from what I have gathered at a quick glance, there are clear “equivalents” to .Net. However, I am very inclined to this, so do not take my word for it.

There are tools for creating data classes from xml / xsd and vice versa (xsd.exe), graphical integrated modeling tools inside Visual Studio, etc.

And there is WPF that I recommend for any project (and not just for graphically-heavy ones); the object model is easy to work with, it has a declarative graphical interface (XAML), and makes tools like diagrams (for example, what you described) much easier to do compared to older ones. Net technologies like WinForms. Pay particular attention to MVVM (Model-View-ViewModel) for the most common template when working with WPF / Silverlight.

+2
source

For the main part of the application, I highly recommend Eclipse RCP + EMF (Eclipse RAP is also a plus, since you can use one application for one application and get a free Ajax application for web applications).

If you need to access your own functions, you can always write it in another language or use JNI or implement the IPC form or use web services (SOAP) or REST-JSON or DBus or any other favorite communication mechanism that you like.

I sometimes call Linux tools from my Java application to do the job (for example, “ssh someserver” or “rsync”) and feel comfortable. I don’t find it an urgent reason to get a “pure SSH library for Java” or a “pure Rsync library for Java” when other tools do the job just fine and I can do the next interesting thing.

By the way, I am inclined to Eclipse and JVM (Note: Java is not my favorite, I prefer Scala and Groovy, but it is easier to work with EMF in Java), I have some experience with. NETWORK. Although there is something good in .NET (one of them is C #, superior to the Java language, but it’s just that the second is a Microsoft package that has more functionality than Sun / Oracle, provides Java [SE] API), there are some things you need to consider.

Cross platform first. Although there is Mono, in general .NET is difficult to port. Although you may not need this, it may come in handy. In addition, Eclipse RCP is not only “more cross-platform”, but also surpasses the functionality provided by the .NET Framework. (I know this is not a fair comparison; it's fair to compare it with Visual Studio Shell)

The second is the license, then the instrument and the cost (three elements). All Eclipse tools available. They are open source (you can fix any mistake, make corrections). The license is open, and you can correctly create commercial products on top of it.

The third is functionality. There is so much functionality inside RCP, in combination with EMF, other Eclipse projects, and the rest of the Java ecosystem (not to mention the JVM languages), you have many possibilities for core functions.

See also: http://eclipsedriven.blogspot.com

+2
source

All Articles