Programming Language for Corporate UI Research?
Daniel Wigdor asks: "I'm a PhD candidate doing an internship at a major American UI research lab. They distribute an input/output hardware device to research labs, along with a Java API for the development of 'concept pieces' (here's an example from a university). Java was chosen because it was simple, and seemed, at the time, to be the language of choice for UI researchers in both the corporate and academic worlds. There is now pressure to switch from Java to C#, since they don't have the resources to maintain an SDK for both. We're not at all concerned with system performance, since this is only for concept-development: it's really just about accessibility for newcomers to the hardware. Given that, what would the community advise by way of a choice between Java and C#?"
Maybe my posting looks biased when you compare the number of pluspoints.
They are random, I just listed what came to mind.
My personal opinion is very strong towards Java.
Cross-platform outweighs everything else by far.
I wouldn't exchange Eclipse against VS.NET 2003 for one day, it feels like your left hand is cut off.
VS.NET 2005 will catch up on refactorings but the Eclipse platform is gaining a competitive advantage which can't be beaten by MS: It is becoming a crystallisation point for all kinds of open source plugin tools like database browsers (our own brandnew Eclipse plugin will go online on Monday), JSP editors, language converters, you name it, it's there.
One very important pluspoint for Java which I forgot to mention:
You get all the sources.
You can debug into them and see how Sun's professionals (try to) solve things. Yeah, sometimes (Swing) you can also see that Java does let you write awkward code also.
db4o - open source object database for Java and
Yes, I trust the Mono guys to catch up very nicely.
How many "dialects" are there of Java?
- JDK 1.1 is still heavily in use as "PersonalJava", on quite a few limited platforms which are nonetheless important, like Symbian.
- Some of the more important J2ME dialects:
- CLDC
- CDC
- MIDP
- PersonalProfile
- Not all companies can or may upgrade to the latest Java VM. Some developers have to restrict themselves to one of the following. Bytecode produced with newer compilers is not backward compatible.
- JDK 1.1.8
- JDK 1.2.x
- JDK 1.3.x
- JDK 1.4.x
- Finally there is the glorious current JDK 5.
I call that dialects. It's quite a mess if you want to develop GUI that has to run on a handheld and on a desktop.Talking of GUI dialects. There is:
C# only has two major dialects:
- normal C#
- C# for the CompactFramework (handhelds)
The strength of Microsoft will prevent the entry of third parties. Many people will not like that at all, but there is one advantage, if you want to build professional software:You can take a decision to start today, there is a clear one-and-only choice, with little risk of discontinuation.
You can't have it both ways; it's either standardised, or it includes GUI stuff.
I think Java and SWT is a good choice.
db4o - open source object database for Java and
I've you're used to Java's SWING layouting, you'll find C#/.NET ridiculous and primitive.
In .NET, you only have one, fixed layouting mechanism which uses either "Dock" or "Anchor" (read specifics in MSDN's Control class documentation, specifically the "Anchor" and "Dock" properties).
If you're doing UI prototypes I really think that this is a severe limitation.
Other arguments against C#: