Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
GUI Software Programming Technology

Programming Language for Corporate UI Research? 115

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#?"
This discussion has been archived. No new comments can be posted.

Programming Language for Corporate UI Research?

Comments Filter:
  • Stick with Java (Score:3, Insightful)

    by brpr ( 826904 ) on Saturday April 16, 2005 @06:30PM (#12257678)

    Carry on using Java if you can, and switch if you have to. No point in changing language if you can avoid it (especially given how similar Java and C# are).

    • I agree. Why not use J# or another java.net implementation?
    • There is a difference: Java is portable, C# is Windows-only (and don't get me started on non-Microsoft, non-Windows implementations of it). In my view, this difference is so important, that it seems foolish to even compare Java and C#: (almost) same syntax, different APIs, different platforms...

      • Re:Stick with Java (Score:2, Interesting)

        by brpr ( 826904 )
        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!).
  • C# vs. Java? (Score:2, Informative)

    by Anonymous Coward
    What's the difference?

    If you're not concerned with performance, and you're in an academic environment, why not use a language like Ruby or Lisp?
    • Or Visual Basic. Seriously. If I'm reading the question right, the SDK is going to be .NET IL (written from C#), and you don't care about performance of the UI above that - you just want to experiment with different interfaces with little learning curve for new researchers. Sounds like VB.NET would work fine.
  • Considered Python? (Score:5, Insightful)

    by MBCook ( 132727 ) <foobarsoft@foobarsoft.com> on Saturday April 16, 2005 @06:40PM (#12257727) Homepage
    Why not set it up in Python? Python can be called from just about any language, and can call just about any language. There are Python bindings for Objective-C, the Win32 API, QT, and just about everything else.

    I realize that this probably isn't the kind of thing you were expecting (I'm guessing you expected to get answers like "C++"), but I think it's a good idea.

    But of the two languages that you have now, I would stick with Java simply because it is completely cross platform (plus just about everyone getting out of school now knows Java because it was so popular/"language of the future", where as many don't know (or have only had an introduction to instead of a large amount of work with) C#.

    But the great thing about Python is you could use it as an itermediary between toolkits and such. Without changing your API, you could replace the Python code so that it used Win32 instead of Swing or QT without making your users learn something new. You want to change the back end from C++ to C or to something else, the interface and the way they call things stays EXACTLY the same.

    Just a though, from a guy who has recently discovered and fell in love with Python. And things will only get better with Python 3.0!

    • by MBCook ( 132727 ) <foobarsoft@foobarsoft.com> on Saturday April 16, 2005 @06:48PM (#12257763) Homepage
      OK, I just watched your video, and I obviously missed the point (to a large degree).

      First I'd like to say, VERY cool concept. Like sometihng out of a movie. That is awesome and looks like it would be so much fun to work on/play with.

      OK, back to the topic. I still think that Python would be a good language. It has the usual features (object oriented, etc), it can be modified at runtime easily (loading/replacing code, a cool side effect of an interpreted language), and there are TONS of standard libraries (not unlike Java, only more) that would give you interfaces to the toolkit you use to draw (OpenGL perhaps?), and other things. Give it a look.

      But awesome application. Now if you could just combine that with a 3D display it would be amazing. And think of the games you could play on something like that (something akin to Qix using your finger perhaps?) Or the "coffee break" game from Mario Paint, or xbill, the list goes on!

      • There are several ways of accessing OpenGL from Java. One example is using the OpenGL for Java API at http://gl4java.sourceforge.net/
      • Thanks for the thoughts. We have started talking about Python, although I fear it's failing to get traction up the ladder. Just 'cause you mentioned it - here's my work with volumetric displays: http://www.dgp.toronto.edu/%7Eravin/videos/uist200 4_volumetric.avi (linked from http://www.dgp.toronto.edu/~dwigdor/) Cheers, Daniel
    • it's really just about accessibility for newcomers to the hardware

      Python is the language of choice mhen talking about accessibility for newcomers in an API.

      You can introspect the code easily, you can modify the code behavior at runtime if needed, and it's very easy to build APIs with.

      Python is a perfect "glue", it seems to me that's what you need.
    • by Jerf ( 17166 )
      You might be able to split the difference by using Jython.

      Not personally convinced that Java is where it's at where UI research is concerned, but I'll confess freely to not having RTFA.
    • I agree that Python is a great language. It's my favorite for small things. (Well, for really small things I use the shell or awk.)

      If you're using Java already, I strongly recommend checking out jython [jython.org], an implementation of Python in Java. I love it for small GUIs because it gives me access to Swing with much simpler syntax than Java.

  • Java (Score:4, Informative)

    by Hard_Code ( 49548 ) on Saturday April 16, 2005 @06:52PM (#12257787)
    C#/CLR is nice and has promise, but if you want UI consistency I would suggest sticking with Java/Swing for the meantime. With C#/CLR you have to pick between Microsoft's Windows Forms implementation, or Mono. As far as I know, Mono has an incomplete Windows Forms implementation at this time, and even if becomes complete I would expect at least some minor UI differences. At the current time I believe Mono has independent GTK, QT, etc. bindings. So if UI consistency is what you want, I'd stick with Java/Swing, and the default cross platform metal/ocean theme.

    If and when Mono implements Windows Forms fully, so that they are sufficiently similar, you may want to re-evaluate at that time (depending on whatever other factors would influence your chioce).
    • C#/CLR is nice and has promise, but if you want UI consistency I would suggest sticking with Java/Swing for the meantime.

      Yeah, if he wants his apps to be fugly. Swing still doesn't have decent fonts in Java-5
    • Er... I highly doubt they are looking at either Swing or Win.Forms. They're mostly interested in the I/O API. Did you watch the video? They go some cool stuff in there.
    • I would suggest sticking with Java/Swing for the meantime

      See, I miss Slashdot for a week and I miss that Swing got a multi-finger glowy-board input model. Those JavaSoft guys are always adding features!
  • by Short Circuit ( 52384 ) * <mikemol@gmail.com> on Saturday April 16, 2005 @06:56PM (#12257807) Homepage Journal
    You're asking Slashdot, where anti-MS sentiment is a given? Good luck getting anyone to recommend C#.

    Actually, if C# was supported under other platforms as well as it is under Windows, then I'd say, go forit.

    However, since C# (and .NET, in general) on Mac and Linux is likely to play continual catch-up a la WINE, I'd say stick with Java. It has much wider support in terms of development environments, giving researches flexibility in their choice and tools.

    When in doubt, go where there's more flexibility.
  • nasm (Score:5, Funny)

    by BladeMelbourne ( 518866 ) on Saturday April 16, 2005 @06:58PM (#12257815)
    I put my vote on assembly. Sort the men from the boys.

    C# is powerful in the right hands, but you loose platform independence. (Mono isn't there yet IMHO)
    • assembly isn't platform independent. It may be O/S independent but certainly not platform. C/C++/Java are the best for that. I agree with a previous poster though. For strictly UI design I would go with any .Net language or VB6. You can't build a UI any faster than in VB, especially in Java. GridBagLayout is a nightmare and it is the best offered layout manager. When I used to do a lot of java development we developed our own layout manager which worked a hell of a lot easier. I wish I would have saved that
      • Another one who hs not read teh article? Or watched the video?

        UI != GUI

        UI = User Interaction
        GUI = Graphical User Interface

        Tell me how long you will need with VB6 to distinguish wether my hand is lying flat on the table or is only touching the table with my little finger and is perpendicular to the table?

        Last time I checked VB6 had no standard controls or events like "OnPalmFlatOnTable" or "OnHandPerpendicular" or "On3FingerTouch".

        The researches are not working with GridBagLayout ... they don't work w
  • by Carl Rosenberger ( 449479 ) on Saturday April 16, 2005 @07:00PM (#12257826) Homepage
    Pluspoints for Java
    + more OS Platforms that you can run on
    + Eclipse as a terrific free IDE
    + huge number of free open source libraries
    + further away from MS (O.K. there is Mono too, but you only have one single second vendor that you can rely on)

    Pluspoints for C#
    + one single choice for UI development
    + more language features (this may be a minuspoint for corporate development, when you only want one way to write things)
    + one language standard, less dialects
    + believe it or not, it's an open standard and (on paper) less proprietary than Java, which is owned by Sun
    + easy GUI development for WinCE or windows mobile, including many mobile phones
    + possible easy interaction with other .NET languages
    + easy direct interaction with Windows OS features

    Now what do you prefer?
    • by mpmansell ( 118934 ) on Saturday April 16, 2005 @07:17PM (#12257920)
      You're making a very big assumption that Microsoft will be the only platform that will be required.

      If you take that away then a number of you C# pluspoints become irrelevant.

      While I agree with you about C# being more open than Java (and I prefer it as a language) most people are thick and don't differentiate languages from associated APIs nowadays. With that thought in mind, how many people really mean "C# and .Net" when they say C#? While you may argue that this is similar to "Java" meaning "Java + Foundation Classes/Swing", the difference is that the Java APIs are cross platform while .Net is, in reality (despite mono) really only a Windows platform.
      • by SunFan ( 845761 )
        While I agree with you about C# being more open than Java...

        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 .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).
        • How can a single-platform platform be more open than Java?

          Java is proprietary. In theory:
          If an Arabian oil company would buy Sun tomorrow and decide to charge USD 100 per Java runtime, they could. I posted something similar to the above as an April-fools-day-joke to the de.comp.lang.java newsgroup on April 1. 2001 and was surprised at the traffic it produced.

          C#'s standardization is simply a marketing trick by Microsoft

          Mono is reality and it's doing quite well.
          Kudos to Miguel, Erik and all contribu
          • " You should just never ignore the other side, there may be a lot to learn"

            Well put!

            Its a shame that these discussions get domminated by narrow viewed people with hobby-horses to promote :(

            Personally I prefer the .Net platform to the Java platform, but I think that that is because of the kitchen sink mentality of the JCPs. As you mentioned, they are not always efficient.

            In practice, however, I'll usually use the Java platform, despite my misgivings about it, since it allows me to use it on other operati
          • by Anonymous Coward

            Java is proprietary.

            I love these people who claim that Java is more proprietary than C# because Microsoft took a small section of C# and submitted it to EMCA as a publicity stunt. Not to mention that the rest is a Microsoft trade secret and the part they submitted to EMCA is still covered a large bank of Microsoft patents, nearly all of which Mono violates. If Mono was any threat to Microsoft at all, they'd be able to shut it down in a day.

            If an Arabian oil company would buy Sun tomorrow and decide

        • If you bothered to read my post, you would see that I was differentiating between the language (C#) and the platform (.Net). I also tried to point out that although the same linkage between language and platform existed with Java, the java 'platform' is virtualised and runs on many physical platforms.

          C# is a good language. In fact I think both it and .Net are superior to Java in many ways, except portability of the combined platform is an issue, especially when people are too blind to differentiate between
          • If you bothered to read my post, you would see that I was differentiating between the language (C#) and the platform (.Net).

            For all practical purposes, they are one and the same. It's just like trying to get a lot of milage out of Lisp without POSIX or GUI layers. It just doesn't happen often. Microsoft understands this 100%.

            If C# standardisation is purely a marketing ploy, how come so many 'big-guns' of the Open Source movement have adopted it and have been involved in porting to unix/linux?

            If by
      • 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
        • "Cross-platform outweighs everything else by far."

          Cross-platform development is something nearly everyone thinks is a good idea but very few attempt. Even using Java, you'd be crazy if you didn't test your software on every platform you target.

          In many cases, you just can't justify the additional effort.
        • As you've noted, balance is everything :))

          Certainly, from the primary posting, I would agree that cross platform was very important in this case. Maybe additional information would help us be more specific.

  • Go with Java (Score:4, Insightful)

    by mpmansell ( 118934 ) on Saturday April 16, 2005 @07:02PM (#12257832)
    Personally, i think that there is much to commend C# as a language, but I think you'll find that those pushing for C# are really pushing the .Net framework rather than the language. While I think it is one of the best things that Microsoft have come up with, it is not portable and unless you wish to have code that runs purely on Windows, Java is the way to go.

    The advantage of Java is that it has a standard API that is tailored to multiple platforms.
  • by the eric conspiracy ( 20178 ) on Saturday April 16, 2005 @07:17PM (#12257924)
    If you are doing UI concept R&D I would think that you would want to be platform independent. Despite all the posturings about Mono, it seems to me that Java is the leader in that area.

    • "If you are doing UI concept R&D I would think that you would want to be platform independent."

      I can't imagine why you would think that. He's just researching concepts, not delivering a final solution. Concepts are quite portable.

      He should use whatever language and framework expedites his research. Then when the research is complete, he can decide on the appropriate approach to take for a real-world implementation (assuming he wants to).
  • Implementation? (Score:2, Insightful)

    by Tamerlan ( 817217 )
    You said about Java API? What is the language the implementation itself is written in? From my experience it is importnat to have API in the sam language as implementation first and then have APIs. You also did not describe motives behind the pressure. What are they? Technological, financial, Microsot grants ... what? That would help in answering your question. Changing anything will cost your employer money. Did they count how much reqrite will take in terms of time and money. If you have to support se

  • If I was making hardware, I'd implement a 9P [bell-labs.com] file server on the device.

    This leaves developers free to choose whatever language they feel comfortable with, be it Java, C#, COBOL or Brainfuck.

  • Seriously enough, if you're having to swap code with the company you're interning with, then either hold a rear-guard action, and advocate for Java, or subvert the Borg, and insist on the Mono/C#, rather than Microsoft/C#.

    OTOH, if it's for your own research, then Python + GUI toolkit is good for rapid prototyping, or there's always Sqeak. (Smalltalk with good multimedia behaviour and performance) Both of these also have the advantage of being Open, which may matter to you later. I like the elegance and
  • Squeak (Score:3, Interesting)

    by jefu ( 53450 ) on Saturday April 16, 2005 @09:03PM (#12258462) Homepage Journal
    If you're looking to decide if a one pixel wide red line around a menu entry works better than a one pixel wide green line, it won't much matter if you use Java or C#.

    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 [squeak.org] (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.

  • by crazyphilman ( 609923 ) on Saturday April 16, 2005 @09:58PM (#12258798) Journal
    If you switch, and start using C#, you'll be stuck using Microsoft Windows for most things. Although there is Mono, if Microsoft ever goes berserk and starts suing them over "patent violations" that'll cause real problems for you.

    If you stick with Java, you can move pretty freely between Windows, Linux, Mac OS/X, and *BSD.

    With C#, I believe you're more limited.

    Additionally, I believe that many more companies offer Java development environments than offer C# environments; with C#, aren't you pretty much limited to Microsoft and Mono? With Java, you can go with Borland, IBM, Sun, even Oracle, and I'm sure there are others as well as "Free Software" implementations.

    Just my two cents; this isn't a Microsoft bashing, by the way, it's just a matter of flexibility. Java gives you more flexibility than C#, so I'd stick with it.

    • A Java person talking abtout "lock in". How many JVM platforms are officially supported, like 3? Win, Linux(x86), and Solaris (Sparc). (Mac is provided by Apple) Compare this to how many are officially supported for python. I count 16 [python.org] just in the OTHER catagory. So while "lock in" is not locked in to one platform, you are extremely limited in what platforms you can choose.

      Python is also free; there is no controlling corporate body; no single source.

      I often wonder why we aren't just distributing .pyc file
      • You're so funny... You complain about lock in, then mention that Java is available on Win, Linux, Solaris and Mac (the four environments virtually EVERYONE is using). Oh, and the Linux version of Java runs on FreeBSD with Linux Binary Compatability turned on -- oh, you didn't know that? That's ok. That's FIVE operating systems Java runs on.

        Oh, and by the way, you're not limited to Sun-provided compilers and JRE's either. IBM has a website full of alternative systems you can use. The Free Software Foundatio
  • by DarkDust ( 239124 ) * <marc@darkdust.net> on Saturday April 16, 2005 @10:47PM (#12259014) Homepage

    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 [microsoft.com], 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.
    • No longer true. Winforms v2.0 introduces two new layout mechanisms: the FlowLayoutPanel and the TableLayoutPanel. As far as the last problem goes, VS 2005 has resolved a lot of issues related to common output directories. You should no longer run into these types of problems. If you still are finding them, log a bug! Check out the MSDN Product Feedback Center [microsoft.com] for more on this.

      Additionally, you'll find that large project maintenance has also been significantly improved in 2005. I'm definitely not a non-bias

    • I'm attempting to compile SharpDevelop in VS2003 right now, and i'm hitting "no common output" directory with VS locking assemblies. There's something like 33 projects/assemblies in the solution and it's driving me crazy. The file locking bug will bite you even without trying to put things in a common output directory.

      That said, I really don't like Java. So many little things that make C# a better language....delegates/events, unsigned, easy interop with native code, structs, enums (which java finally g
      • That said, I really don't like Java. So many little things that make C# a better language....delegates/events, unsigned, easy interop with native code, structs, enums (which java finally got), ref and out parameters, no stupid physical directory hierarchies to match packages, etc...

        You're right, I forgot about these language features. And yes, C# is a nicer language, but the question is whether those syntactic sugars justify switching the established framework and tools. After all, that's going to cost a

    • Well said! My three cents:

      - Java has "foreach" in JDK5 and it works very nicely for arrays and lists:
      for(Posting posting : postings){posting.read();}
      - Although there are many layoutmanagers for Java, you usually end up writing your own from scratch if you really care for a nice user interface.

      - For beginners that want to write user interface I see an advantage to use VS.NET.
    • "If you're doing UI prototypes I really think that this is a severe limitation."

      If you're just doing UI prototypes you don't even need "Anchor" or "Dock" properties, a fixed layout will give you everything you need. Layout managers are useful for handling multiple resolutions or multiple platforms, but they don't give you any additional graphics or interactive capability.

      This is research, not a product.
  • There are ISO standards for a few languages. Those languages have a chance to be viable for a while. Why not present a C interface? You can get at that from any language, and anybody can maintain it. Why not present a C++ interface? It remains unsurpassed as an industrial language. Ten years from now when Java and C# are as nearly forgotten as BASIC and Pascal are now, C will remain an important language, at least for interoperability purposes, and C++ will still be well known and heavily used. There
    • A C language interface is to low level.

      If you go down so far, you bettere stick with a dynamic typed scripting language.

      Suppose you have an OO language on one side and C on the other: when you start to express in C what you can do on the OO side (writing functions for the methods) you have to stick to "handles" for the objects and functions accepting those handles as arguments.

      But you are in C now with limited type checking ... you basically can pass any "id" or "handle" to any function, regardless which
    • There are ISO standards for a few languages. Those languages have a chance to be viable for a while.

      Very few languages fade from viability - check the significant number of current COBOL jobs.

      Ten years from now when Java and C# are as nearly forgotten as BASIC and Pascal are now,

      Forgotten? Have you any idea how popular Visual Basic is? Delphi (Object Pascal) is still widely used.

      C will remain an important language, at least for interoperability purposes,

      C is a terrible language for interoperabil
      • Visual Basic is not BASIC. Delphi isn't Pascal. Both are proprietary languages with exactly zero portability; as their platforms fade, the code will fade with them. (How much Clascal, Apollo Pascal, or Bliss do you see these days?) Code written in such languages vanishes even faster than Java code will.

        C remains the canonical language for interoperability, purely because every existing commercially viable language (like every new language, for at least two decades to come) provides a way to call out t

        • Visual Basic is not BASIC. Delphi isn't Pascal. Both are proprietary languages with exactly zero portability; as their platforms fade, the code will fade with them.

          Visual Basic certainly IS Basic - anyone who has used a typical dialect

          Delphi IS Pascal. You can type pretty standard pascal

          Basic has never had portability, no matter what the dialect. On the other hand, Delphi conforms pretty closely to Object Pascal, and there are many implementations to which most of the code can be ported.

          C remains th
    • You are maybe not aware of the fact that C# is an ISO standard? So part of your argument breaks.
  • Java, C#, and C++ are not scripting languages - for example they have compile-time type enforcement, no eval statement, etc. Starting about 10 years ago I think it's been pretty clear that you don't want to do UI programming in a low-level language like those, you want to use something like Python, Tcl, or Scheme. Just write the "hello world" application in each of those languages and see the difference. It's 2 lines in Tcl/Tk. What's it in Java - 100 lines or so?
  • Do what skype did (Score:3, Insightful)

    by Tobias Luetke ( 707936 ) on Sunday April 17, 2005 @01:12AM (#12259685)
    Do what skype did. Implement the essence of your application in whatever you see fit. They used c because they needed performance. Then they go round and use the best GUI toolkit on every platform. Objective-C + Cocoa on the mac. Delphi / VCL on windows, QT on linux (ok arguable choice). The clients are very pretty and excellently integrated on all the platforms, for example the mac version uses a drawer like interface for current calls and uses a little translucent notification window on incoming calls with buttons for answer and hangup.

    That being said, wxWidgets works on most platforms and you can program it well from many languages like ruby, python, all the c's, c# and so on.
  • Don't change (Score:5, Insightful)

    by darnok ( 650458 ) on Sunday April 17, 2005 @04:17AM (#12260336)
    My advice is to stick with what you've got now. That advice would also apply if you were using C# and wondering about switching to Java.

    Honestly, the two languages are close enough in terms of capability that it really boils down to the cost and effort involved in switching.

    Cost to remain with Java: $0

    Cost to switch to C#: (by the time you've recoded all your "trivial" common routines you've created to work within your particular environment, built .NET equivalents to your scriptable Ant software build scripts, retrained people and maybe pissed off a few in the process, etc.) a lot more than $0

    Speak to people who've worked a lot with both languages. Get them to rank both languages out of 10 in terms that are relevant to you. Average the scores across a bunch of people. If C# averages >1.5 more than Java, then consider switching
  • C# is unsuitable for serious research, as it is designed to compete with Java for enterprise applications, not systems or interface programming. It is a very specialized tool best suited for running databse intensive applications with very little UI that isn't part of Microsoft's standard widget library.

    Java is the language that the majority of comp sci programs use to teach programming these days, and it is very, very good as a general purpose programming language. Its abilities and limitations are well u
  • It seems to me that if you are programming, you are no longer doing research, at least not UI research, which seems to have more to do with human beings than computers.

    It also seems to me that if you are using Java or C#, which are commercial systems unlikely to be influenced by academic research, you are a bit behind the curve. WIMP interfaces have been around for 20 years now.

    If you have research that is best shared through an SDK, then you should use the language and tools of your most likely or rec

    • This is *hardware* UI they're talking about. They're not talking about Swing or Win.Forms. They want to know which platform has the better I/O API.
      • Hey, quit reading the articles. You're increasing the SNR too much. :)

        Java isn't so strong natively on I/O but that's what JNI is for. Wrap your primitives in JNI and do your work in a higher-level language.

        Speaking of which, the video just screams LISP, though I have no experience interfacing hardware with LISP. Ruby might be a good second choice - you can wrap c functions with Ruby like you can with JNI and it's a more powerful language than Python which might help in the more lambda-oriented parts o
    • Appreciate the feedback. As you saw in the video, we are defining new input paradigms. Although there is a great deal of ongoing WIMP related research, ours is not at all in the WIMP domain: we're using the language to build new tools. It's fair to say that HCI research should start with the H, but it certainly can't end there. Implementation and verification of effectiveness is an essential component of any UI design work. Otherwise, it's not researching at all: it's pontificating.
  • A state-of-the-art solution would be using a UIML-renderer, which should be available for any platform and programming language one day.

    UIML is a subset of the XML-language for implementing platform- and programming-language-independent user-interfaces.

    Maybe you should have a look around, whether there is a good UIML-renderer for Java.

    If your research is into this topic, you may even want to develop a UIML-renderer for Java yourself! I'm sure many people would be interested in an open-source project with

  • Stick with Java (Score:3, Insightful)

    by turgid ( 580780 ) on Sunday April 17, 2005 @08:48AM (#12261135) Journal
    Stick with Java unless you wish to confine yourself only to the Windows platform. Yes, Mono aims to be a Free implementation in Linux but it's still in development.

    If you stick with Java, you can use Java language compilers from many different vendors, including gcc, and your code will be portable between many different Operating Systems.

    Java is more stable and mature, has a huge developer community and is supported by enormous, comprehensive class libraries.

  • so don't take this the wrong way but seriously
    Java != simple

    Just use your bathroom scale. Sybex Mastering Java 2 weighs in a 1236 pages. Harbison & steele, who covered their topic with equal thoroughness and greater clarity, managed C a reference manual in 392 pages. Java decided it had to be the OS and had to move a few layers out into the application space in order to be viable...it may have accomplished that but simplicity?
  • UI Research is a pain in the ass in Java or C#. It's a pain in the ass in any language that makes you work to reinvent.

    I perform UI experiments largely with pygame, or perl-SDL. It gives me a chance to rapidly try out USER interface changes as I don't have to worry about whether or not delegation is "easy enough" to facilitate the change.

    With Java and C# (or C++ for that matter) you've got an awful lot of work building classes and inheritance and if experimentation demonstrates a particular (unexpected!)
  • Given that, what would the community advise by way of a choice between Java and C#?

    Neither. Having watched the video, I am most reminded of AudioPad [jamespatten.com]. For that, "Most of the code is written in Python, except for the low-level tracking code, which is in C and C++." I've also used a demo inspired by that called Mix done in Io [iolanguage.com]. UI experts want to be able to very quickly scale up from the low level of the device to the high level of the research. I would thus suggest you target C in an OO fashion, whi

  • Seriously, both offer a very rich IO API, and they're both quite mature, despite C#'s "newness". The syntax of both are roughly similar, keywords and C#'s "property" syntax notwithstanding. What you can do with one language, you can do with the other, no problems.

    My personal preference is C#, simply because I enjoy the property syntax and delegates, both of which Java does not offer. Plus I'd rather code in Windows.Forms than Swing any day of the week. But you're not doing desktop GUIs, are you? Anyway, yo
    • The more I think that maybe you should consider offering APIs for *both* languages. Why tie your API to one platform?

      You could even consider a multi-tiered approach: create a .dll or .so written in C (or whatever language you use for the driver), and create wrappers in both Java and .NET. You could even create a (shudder) COM wrapper as well, so the VB6 folks could jump in.
  • by angel'o'sphere ( 80593 ) on Sunday April 17, 2005 @12:23PM (#12262327) Journal
    Slightly anoying are the answers I saw where the amount of available bindings for Python are enumerated and QT or OpenGL come to speak.

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

    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, .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.

    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 /. 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.

  • - C# gives you access to a wider variety of tools. You can import most .dlls with far less fuss than JNI. Plus the DirectX / Direct3D bindings give you better media processing capability than Java's sound and media extensions. Finally, if you're doing ubicomp / sensing / small devices and need to do some low-level stuff, C# lets you access USB and parallel devices.

    - Java has much better IDEs available. The refactoring support in Eclipse is a critical tool for research / prototyping projects, letting you cl
  • First of all, disclaimer: I am the President of the Northern Virginia Java Users Group, and I am a big fan of Java.

    You are doing UI Research... Chances are, you are going to want to do things 'outside the norm' for existing UI development. Which language has better support for this? Frankly, I don't know, because I don't know C#.

    I do know Java. Java has AWT, Swing, SWT, JSP, Java Server Faces, etc. With Swing, you can easily switch between different 'look and feels', and has the 'pluggable look and
  • You did say "corporate". And with a PowerPoint compiler, your visions for synergy of paradigms can not be beat!

interlard - vt., to intersperse; diversify -- Webster's New World Dictionary Of The American Language