Slashdot Mirror


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#?"

3 of 115 comments (clear)

  1. Re:Comparing pluspoints by Carl+Rosenberger · · Score: 3, Interesting

    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.

  2. Re:Comparing pluspoints by Carl+Rosenberger · · Score: 3, Interesting
    Are you referring to WinForms?

    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:
    • AWT
    • SWT
    • Swing
    ...just to name the major "corporate" ones. There are tons more by small to mid-size shops.

    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.
  3. .NET has primitive layouting by DarkDust · · Score: 3, Interesting

    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#:

    • Java is a mature plattform, C#/.NET is quite new compared to Java
    • There are more people that know how to code in Java than people that know how to code in C# (it's not hard switching from one to other language-wise, but it's a hell of a lot different framework-wise)
    • While implementations of .NET exist for other plattforms (GNU Portable .NET/dotGNU and Mono) they are not completely compatible yet, especially not in the GUI side (I know that since I've fixed a lot of System.Windows.Forms bugs in Portable .NET the last months as part of my work). Compare that to the known-to-be-good cross-plattform support of Java !
    • Ask why the people that want to use C# think that C# is better suited for the job than Java. I'm pretty sure those people just recommend because it's currently the Programming-Language-Of-The-Month and buzzword-compliant. IMHO most technical reasons really speak against C# (except for properties and foreach, which just are nice syntactic sugar but really aren't worth the huge work of switching).
    • Ask what benefits those people expect to gain. Switching your existing stuff will cost a lot of money: it'll cost time for people to learn C# and especially the .NET framework, you'll surely have to use different tools which you'll have to deal with and especially learn their flaws and work around them.
    • Most people will like to use C# with MicroSoft's Visual Studio .NET because they know it and think it's good. Be warned that this is a nice IDE but is really bad at maintaining big projects. Especially big projects with subprojects. VS.NET often makes simple tasks that the developers of VS.NET didn't anticipate extremely hard or even impossible (for example, if you have several subprojects which depend on each other you can't have them compile into one directory: VS.NET will hold some files open and then complain that it can't open those files because "another" application has this file already open; MS knows this problem but simply says "don't compile into one directory", which will force you to do "unnatural" workarounds). I think VS.NET is a nice IDE for beginners and intermediates, but it way too limited and flawed for big projects.