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#?"
Exactly, you're responsibility is for the program to work in general. Not what hacks you have to do to get it running on mono.
While I agree with you about C# being more open than Java...
.NET. It is really meaningless in the big picture, especailly compared to Sun's JCP, which has hundreds of members from many varied backgrounds (incl. Apache and JBoss).
Score: +5 wishful thinking. How can a single-platform platform be more open than Java?
C#'s standardization is simply a marketing trick by Microsoft to lead people into
-- Microsoft is the most expensive commodity operating system and office suite vendor in the marketplace.
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
If you'd like to develop new ideas in UI's and really experiment with different ways to handle them, probably neither Java nor C# will really help much.
But squeak (a smalltalk implementation) might. You should at least give it a serious look. Of course there are other possibilities (self, raw X windows...) but squeak looks like a good one to me.
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#:
Slightly anoying are the answers I saw where the amount of available bindings for Python are enumerated and QT or OpenGL come to speak.
:D
.NET, GTK bindings, QT, QT bindings plus the desired scripting language. Whats with mono for the Mac BTW? All the nice Scripting languages for the Java Virtual Machine run on my Mac as well.
....
/. suggested in switching to a "better" language and have endless bindings, the more work you will spend in configuring those systems instead on improving them.
Probably the authors of such posts should at least have watched the video?
Back to topic:
I suggeest to stick with Java for several reason:
a) why dropping a succesfull existing system because of language?
b) why forcing all people allready working with it to learn a new language/environment (libraries and such)
c) you likely get FAR MORE developers (researchers) for Java based software than for e.g. Python
There are people like me who simple never would touch Python.
Why the crowd may ask? I simply can't cope with the syntax. I hate it, I have an awersion against it. I can't stand it that as soon as you try to some meta level stuff everything is done with full capitalized variables starting with __. I cant understand why you have to declare the "this" pointer in each method, called self -- by convention, instead of simply "having one" like in C++/Java. Its a dynamic typed language, I simply can't work with something like that. Thats just me, but there ARE programmers LIKE me, who simply hate languags liky Python and e.g. TCL.
d) Java has enough bindings to scripting languages like Groovy, TCL, Python(Jython), Ruby(JRuby) and a lot of others. It is far better to keep your "kernel" in Java and let the users descide if and how they put additional services or "experimental software" on top of it. So all the guys yelling Python is so much better can use it without blocking me from using Java
Switching to C# gives no new options, but just different ones and IMHO far less mature ones.
Lets look at platforms, in case you want to use a scripting language with such a binding to access your software written in C#: Installing software on a machine allready having Java is merly a download/copy process. C# based software (or GTK/Qt) OTOH needs on Windows likely to be "installed" and the user needs admin rights. For a geek it is easy to install Qt or GTK on HIS OWN windows machine as well as on any other machine/OS he has the rights to. But a PC pool in a university likely has more rigid management.
However for a cross university developemnt process, its better to stick with something simple, where not every PC, Linux or BSD or Windows, needs to have additionaly software: Mono,
e) Releasing your software (even internal) under different languages will undoubtable lead to an enourmous increase in support questions.
Why does my Python call give that silly error message? Because the user gave a wrong argument (type)
The more complex your system becomes, like a lot here on
angel'o'sphere
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Ironically, Sun's license exists for one and only one reason: to keep Microsoft from taking it over. What we're seeing with C#'s lock-in nature is exactly what Sun didn't want to happen to the community. Yet you somehow see C# as a good thing.
Mono supports a tiny subset of C#'s libraries. As far as I'm concerned, mono has no shot at catching up with Microsoft here.Mono seems to be pretty good in my limited experience of it. Unless you need the Windows forms API, of course. Ironically, Mono works better for me on Linux than Java (just try getting a modern JDK for PPC Linux!).
Freedom is not increased by mere diminuation of government. Anarchy is freedom for the strong and slavery for the weak.