Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Programming Language for Corporate UI Research?

Cliff posted more than 9 years ago | from the best-language-for-the-job dept.

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

cancel ×

115 comments

Sorry! There are no comments related to the filter you selected.

Stick with Java (3, Insightful)

brpr (826904) | more than 9 years ago | (#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).

Re:Stick with Java (1)

abradsn (542213) | more than 9 years ago | (#12258356)

I agree. Why not use J# or another java.net implementation?

scripting (0)

Anonymous Coward | more than 9 years ago | (#12260343)

I'm totaly into java. But for proof of concepts use scripting languages Pyton or Ruby.

C# vs. Java? (2, Informative)

Anonymous Coward | more than 9 years ago | (#12257703)

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 (2, Insightful)

YetAnotherAnonymousC (594097) | more than 9 years ago | (#12257735)

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? (4, Insightful)

MBCook (132727) | more than 9 years ago | (#12257727)

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!

Re:Considered Python? (4, Informative)

MBCook (132727) | more than 9 years ago | (#12257763)

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!

Re:Considered Python? (1)

tim256 (855256) | more than 9 years ago | (#12259329)

There are several ways of accessing OpenGL from Java. One example is using the OpenGL for Java API at http://gl4java.sourceforge.net/

Re:Considered Python? (1)

mchoui (31362) | more than 9 years ago | (#12257872)

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.

Re:Considered Python? (2, Insightful)

Jerf (17166) | more than 9 years ago | (#12259116)

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.

Re:Considered Python? (0)

Anonymous Coward | more than 9 years ago | (#12259132)

Sorry but newcomers have no business telling anyone anything.

Wait till you get some experience before saying "this is the way." Often the excitement of something new covers the obvious deficiencies in what we are working with.

Python isn't that great, neither is Java. C# wouldn't be too bad if it were better supported cross-platform but that's obviously a serious problem.

Personally, I would stick with what they are already using (Java). In the long run it doesn't matter because you'll eventually be using something else anyway (because all the current solutions suck).

Re:Considered Python? (1)

MBCook (132727) | more than 9 years ago | (#12262960)

I know. I've been using it for a few months and really like it. That said, I wan't saying "Python is the answer to all your problems", I was saying "Maybe you should look at Python to see if it is worth looking into". I also suggested that they just stay with Java.

My post wasn't designed to give an answer, but a direction they might want to look in.

ROFL Python Zealot Alert! (0)

Anonymous Coward | more than 9 years ago | (#12263065)

Before I got to the comment list, I *knew* the first comment would by 'python'. LOL. Open source lemmings are so predictable. It's the VB of the open source world - everyone and his brother thinks he is an 'expert' in it, even if he has never written a program with it.

Re:ROFL Python Zealot Alert! (1)

MBCook (132727) | more than 9 years ago | (#12265218)

What can I say, I like it. I'm not saying that it's the answer to everything. And for the record I have written more than a few programs in it (one of which maintains my site for me). And I NEVER claimed I was an expert.

Re:Considered Python? (1)

Khelder (34398) | more than 9 years ago | (#12267754)

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 (3, Informative)

Hard_Code (49548) | more than 9 years ago | (#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).

Re:Java (0)

Anonymous Coward | more than 9 years ago | (#12259926)

"C#/CLR is nice and has promise, but if you want UI consistency I would suggest sticking with Java/Swing for the meantime."

I guess you mean a cross-platform UI, not just a consistent one. On a single platform Java/Swing has no consitency advantage over C#/CLR.

Re:Java (1)

aCapitalist (552761) | more than 9 years ago | (#12260280)

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

Re:Java (1)

Randolpho (628485) | more than 9 years ago | (#12262187)

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.

You're asking *Slashdot*? (5, Insightful)

Short Circuit (52384) | more than 9 years ago | (#12257807)

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.

Re:You're asking *Slashdot*? (1, Interesting)

Anonymous Coward | more than 9 years ago | (#12257983)

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.

Re:You're asking *Slashdot*? (1)

Quattro Vezina (714892) | more than 9 years ago | (#12258286)

Actually, as much as I hate Microsoft, I have to admit that they've done a good job with C# and the .NET platform in general.

It's the one thing they've really done right.

Re:You're asking *Slashdot*? (1)

Short Circuit (52384) | more than 9 years ago | (#12258528)

As far as I'm concerned its only failing lay in its restricted availability. Of course, their entire policy prevents that from changing.

nasm (4, Funny)

BladeMelbourne (518866) | more than 9 years ago | (#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)

Re:nasm (0)

Anonymous Coward | more than 9 years ago | (#12259025)

A wrench will help that loose platform.

Re:nasm (0)

Anonymous Coward | more than 9 years ago | (#12267907)

Hey, hey, what can I do?
I got a woman, and she won't be true...

Re:nasm (1)

BoomerSooner (308737) | more than 9 years ago | (#12261999)

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 code!

Re:nasm (1)

angel'o'sphere (80593) | more than 9 years ago | (#12262370)

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 with layout at all ... they work on replacing the mouse by the hand and multiple! fingers.

Also: if you find GridBagLayout a NightMare (TM) then its probably good for us you stick with VB6 hehe ... not funy? Sorry, trying to log on into WoW since 2 hours and ONLY the server with my characters is down or something :-/

angel'o'sphere

Re:nasm (0)

Anonymous Coward | more than 9 years ago | (#12265430)

The word is "LOSE" dipshit.
It's ironic that you're debating languages when you can't even use the one you grew up with... English.

Comparing pluspoints (5, Insightful)

Carl Rosenberger (449479) | more than 9 years ago | (#12257826)

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?

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12257914)

one single choice for UI development

Are you referring to WinForms? That's not cross-platform.

You have the option of using GTK# for a cross-platform GUI, but that blows your whole "single choice for UI" plus point out of the water.

one language standard, less dialects

How many "dialects" are there of Java? As far as I know, there's just the canonical version and the obsolete J++ sabotage that Microsoft foisted upon developers.

believe it or not, it's an open standard and (on paper) less proprietary than Java, which is owned by Sun

Except the GUI bits that you count as a plus point aren't standardised. You can't have it both ways; it's either standardised, or it includes GUI stuff.

Re:Comparing pluspoints (3, Interesting)

Carl Rosenberger (449479) | more than 9 years ago | (#12258272)

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.

Re:Comparing pluspoints (4, Insightful)

mpmansell (118934) | more than 9 years ago | (#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.

Re:Comparing pluspoints (2, Interesting)

SunFan (845761) | more than 9 years ago | (#12258003)

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

Re:Comparing pluspoints (1)

Carl Rosenberger (449479) | more than 9 years ago | (#12258808)

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

It is really meaningless in the big picture, especailly compared to Sun's JCP, which has hundreds of members

JCPs are design-by-committee which is not always efficient. Sometimes it can be like having too many cooks in a kitchen. Just look at the latest EJB vs. JDO clash. It is a lot easier for MS to move faster by simply "setting" "standards" with no discussions. Pace is an important factor for innovation.

Voltaire said: "I would rather be ruled by a lion than by a thousand rats."

Did I already say that I prefer Java (the platform) to C# (the slightly better language) ? You should just never ignore the other side, there may be a lot to learn.

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12258917)

It is a lot easier for MS to move faster by simply "setting" "standards" with no discussions.

Complacently favoring dictatorship is what got everyone into this Microsoft monopoly mess to begin with. Sigh, people never learn.

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12259959)

What mess? Having a "standard" platform is what has driven the computer business for the last 15 years and has made the low cost PC possible. Open/Free source would still be merely a university curiousity without a low cost platform to run on.

Re:Comparing pluspoints (1)

SunFan (845761) | more than 9 years ago | (#12265437)

Having a "standard" platform is what has driven the computer business for the last 15 years and has made the low cost PC possible.

No, IBM clones made the low-cost PC possible. They just threw Microsoft on there, because not many options existed and UNIX was still expensive. Microsoft rode the wave, finding ways to lock-in their customers, and, now, there is a genuine backlash against Microsoft.

The developing generation of GNOME/KDE-based desktops are going to drive the sub-$200 PC. Not Microsoft, not by a long shot.

Re:Comparing pluspoints (2, Insightful)

mpmansell (118934) | more than 9 years ago | (#12260778)

" 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 operating systems that may be better suited to the job at hand.

One thing that people often forget when talking about portability is skills portability. A language that can be used on multiple platforms is a more valuable skill to the individual; it gives them more work opportunities :)

Re:Comparing pluspoints (1, Interesting)

Anonymous Coward | more than 9 years ago | (#12269537)

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 to charge USD 100 per Java runtime, they could.
Yeah, and retract Blackdown's license? You have evidence that Sun's license is revokable? Or that Sun's moving to more restrictive license instead of (in fact) less restrictive ones? If not, retract this silly statement, Mr. FUD.

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 is reality and it's doing quite well.
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.

Re:Comparing pluspoints (1)

mpmansell (118934) | more than 9 years ago | (#12260719)

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 the language and the platform.

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?

C# is an open standard. Java is not. Fact. Period!

Anyone can produce a C# compiler and call it C#. That cannot be said of Java. C# is a viable development language on many non-microsoft platforms and can be used with many native libraries. (gtk, for one) Tell me how that is not open? .Net is not open. Even Mono doesn't completely implement .Net. .Net really only runs on M$ platforms. (although it does really well and it is a shame it isn't cross platform - M$ can do things well, sometimes :) )

So, C# + .Net is not an open platform. Most definately (and sadly) not. But C#+.Net is distinct from C#.

Re:Comparing pluspoints (1)

SunFan (845761) | more than 9 years ago | (#12265500)

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 'big guns' you mean Mono, that's a pretty small faction of FOSS. Sure, there's some seriously influential people in there, but the project remains controversial in the FOSS world at large. Anyone who implicitly trusts Microsoft these days is a huge risk taker.

Anyone can produce a C# compiler and call it C#. That cannot be said of Java.

What does the 'j' in GCJ stand for? Sun just doesn't want people touting the Java Platform brand without conformance testing. The name of the language is not an issue.

Re:Comparing pluspoints (3, Interesting)

Carl Rosenberger (449479) | more than 9 years ago | (#12258108)

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.

Re:Comparing pluspoints (1)

ClosedSource (238333) | more than 9 years ago | (#12259988)

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

Re:Comparing pluspoints (1)

mpmansell (118934) | more than 9 years ago | (#12260800)

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.

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12259947)

"You're making a very big assumption that Microsoft will be the only platform that will be required."

Actually you're making the assumption that multiple platforms are required even though the story never said that. One can always invent a set of requirements to make one solution look better than another.

Re:Comparing pluspoints (1)

mpmansell (118934) | more than 9 years ago | (#12260638)

Am I, indeed? I can fully understand why you would post as an AC. The shame of not being able to handle language properly must be overwhelming

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12263063)

Wow, what a lame response. Surely you can come up with a better counter-argument than insulting me. Or maybe you can't.

Re:Comparing pluspoints (1)

mpmansell (118934) | more than 9 years ago | (#12263099)

Its hardly lame shooting trolls who hide behind an AC.

Especially those who can't read :)

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12263146)

You've confirmed it. You can't.

Re:Comparing pluspoints (0)

Anonymous Coward | more than 9 years ago | (#12268069)

So what if .NET on Windows has more features than Mono? Is writing to the lowest common denominator rocket science now we're in the 21st century? C# is a language; .NET/Mono are platforms. There exists a concept called "platform independent code".

Also it's worth pointing out that although the concept exists, in 90% of cases platform independence is not remotely important. Writing prototype research software for this custom device is quite clearly one of those cases.

Assuming the device runs WinCE, C# is the clear winner.

Go with Java (3, Insightful)

mpmansell (118934) | more than 9 years ago | (#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.

Re:Go with Java (0)

Anonymous Coward | more than 9 years ago | (#12259974)

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

Not like Java which can be run without a JVM. Oh wait.

Re:Go with Java (0)

Anonymous Coward | more than 9 years ago | (#12261061)

VM is not a Framework.
But, your ignorance is hopeless and you really have no idea what are you talking about.

Can't See Why you would change. (2)

the eric conspiracy (20178) | more than 9 years ago | (#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.

Re:Can't See Why you would change. (1)

ClosedSource (238333) | more than 9 years ago | (#12260026)

"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? (2, Insightful)

Tamerlan (817217) | more than 9 years ago | (#12257957)

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 several APIs, I'd say write IDL and generate interfaces for as many languags as you want. Unfortunately this is not as easy as it supposed to be.

C# is Proprietary (0)

Anonymous Coward | more than 9 years ago | (#12257975)


The reason: .NET. While Microsoft did a token standardization of the C# language, the bulk of .NET that makes it useful is proprietary. They know this, and they want it this way. By making the language appear to have low barriers to entry, they increase the number of people who will develop with it and unwittingly tie themselves to the Windows platform.

While the obvious rebuttal concerns Mono, consider that Microsoft has not given Mono a legal blessing. How long will they allow Mono to exist? Until they feel .NET has enough mindshare to exist as a Microsoft-only solution? While Mono is certainly a cool project, it is one that people already not committed to Windows should be wary of.

If your two options are Java and C#, the obvious choice is Java. Java has a very strong multi-vendor commitment to its development, and it has complete implementations available from Sun for Linux, UNIX, and Mac OS in addition to Windows. As a Ph.D. canidate, I hope you can appreciate the value of this regarding freedom from corporate entanglement as you move forward in your research.

Re:C# is Proprietary (3, Insightful)

Mike Greaves (1236) | more than 9 years ago | (#12261895)

'consider that Microsoft has not given Mono a legal blessing'

IANAL, and I have myself had reservations about this point...

However, it seems quite unlikely that MS would succeed in choking off core (C# + CLR) Mono development - for a lot of little reasons:

1. Novell appears to be Mono's primary backer and they appear to have real patent leverage w.r.t. MS.

2. Probably not many of the patents covering the core can hold water due to prior art. I think it's been suggested that MS + Sun together could launch a more effective patent attack. How likely is that? (things like WinForms, ASP, ADO would seem to be in greater danger)

3. Mono could still ship with the odd feature stripped or workaround mechanism in place.

4. MS can not simply beat up on who it feels like nowadays; not with the EU and others breathing down it's neck.

As an aside, can anyone think of a *language* implementation that was killed by patent litigation?

--
Mike Greaves

I would choose 9P (1)

DrSkwid (118965) | more than 9 years ago | (#12257987)


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.

Asking that... on slashdot :)? (0)

Anonymous Coward | more than 9 years ago | (#12258038)

... is stupid ;) it's the same as asking "what company rules, syn or microsoft?".. gee... the answer here is obvious ;)

MFTL Time, again. (1)

Frumious Wombat (845680) | more than 9 years ago | (#12258140)

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 history of the pure OO Smalltalk, but realize that you're not going to find hordes of other programmers comfortable with it.

Squeak (2, Interesting)

jefu (53450) | more than 9 years ago | (#12258462)

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.

Re:Squeak (0)

Anonymous Coward | more than 9 years ago | (#12259145)

pffft, pure OO languages suck.

Squeak-Flash with Actionscript. (0)

Anonymous Coward | more than 9 years ago | (#12259507)

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

Flash with Actionscript.

Re:Squeak (0)

Anonymous Coward | more than 9 years ago | (#12265523)

Wow. You really didn't actually look at what type of research they were doing did you. Your comment is useless. Watch the video.

just fucking.. (0)

Anonymous Coward | more than 9 years ago | (#12258679)

use flash.

you're going to be making fucking mockups all night long anyways...

No question; use Java. Avoid OS lock-in. (2)

crazyphilman (609923) | more than 9 years ago | (#12258798)

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.

That is so funny.... (1)

scorp1us (235526) | more than 9 years ago | (#12268836)

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 files instead of .java. I can only speculate that it was a lack of a standard windowing system and a browser plug in. But everything is better in python.

Since you are coming from Java, don't forget Jython. And if you are coming from .Net don't forget IronPython.

All in all, I have to recommend python for so many more reasons than vendor non-lock in.

Also for your new interface I would suggest the PyGame module.

Re:That is so funny.... (0)

Anonymous Coward | more than 9 years ago | (#12269258)

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 Foundation is working on their own implementations as well.

Where's your lock-in? Because I'm having a hard time finding it.

BY THE WAY, I'm not a "java person". Professionally, I do VB.Net. Nyah, nyah. Pthhhbbbth!

(All in jest, all in jest, no hard feelings)

-- Crazyphilman (I'll repost this tonight from my own account).

Oh, by the way, about Python? Only hippies use languages that delineate their blocks with indentation. Bring back the curly bracket and C-derived syntax, and I might take you seriously.

.NET has primitive layouting (3, Interesting)

DarkDust (239124) | more than 9 years ago | (#12259014)

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.

Re:.NET has primitive layouting (1)

AaronBrethorst (860210) | more than 9 years ago | (#12260248)

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-biased party on this matter (I work on Visual Studio), but I think it's worth checking out what we're currently finishing instead of what v.Last did.

Re:.NET has primitive layouting (1)

aCapitalist (552761) | more than 9 years ago | (#12260366)

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 got), ref and out parameters, no stupid physical directory hierarchies to match packages, etc...

Re:.NET has primitive layouting (1)

DarkDust (239124) | more than 9 years ago | (#12260757)

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 lot of time and effort and without any other technical benefits I doubt nicer syntactic language features are worth the effort.

Re:.NET has primitive layouting (1)

Carl Rosenberger (449479) | more than 9 years ago | (#12261882)

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.

Re:.NET has primitive layouting (1)

ClosedSource (238333) | more than 9 years ago | (#12263132)

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

WTH (-1, Redundant)

UlfGabe (846629) | more than 9 years ago | (#12259296)

a 80 meg file???? WTF

you trying to kill them all?

what you, speak up?

stupid irresponsible editors

Standard? (1)

Markus Registrada (642224) | more than 9 years ago | (#12259512)

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's no better way for your work to wash away than to associate it with passing fads.

Re:Standard? (1)

angel'o'sphere (80593) | more than 9 years ago | (#12262539)

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 "type" that "handle" on the OO side has.

The result is intensive "dynamic" type checking on the API layer. Its not EASY to make a safe and sound API layer in C on top of an OO kernel.

OTOH: C++ is (IMHO) still not portable enough.

I disagree with your assumption about the future of languages.

C++ is a language that tried hard to have a "compatibility" mode to C. And C tried hard to be a portable Assembler. Both succeeded and where likely the right descissions at the point in time where they where incepted.

But the future of programming languages will be languages that have a more "uniform" syntax over all their feature, but have runtime and compile time meta levels. They will have multiple inheritance and combined functional/oo and logical/constraint based paradigms (of course also generic programming via templates). A lot of stuff which is currently outside of languages, e.g. in CASE systems or MDA systems or in relational databases will be inside.
E.g.: Graphs as build in language structure(needed anyway for above mentioned meta level programming). XPath like querys on those graphs (combined with OCL like predicates) and bulk manipulation of objects.
Further: those languages will have a simple mode where types are infered and an annotation mode where you can add annotations to identifiers to give them a type. The simple mode will probably try to be very close to natural languages, see the MIT project mentioned on /. lately or simply look at ApplScript.

Ever tried to move a script to a static typed programming language? Or translated some Python to Java? Type annotations and a lint like checker (or in this case teh compiler) would be a great assistance.

Languages like C and C++ will in future only be of historical interest because: a hell of a lot of code in those languages exists.

angel'o'sphere

Re:Standard? (1)

Decaff (42676) | more than 9 years ago | (#12265305)

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 interoperability as it is highly system dependent. Far better are interpreted or JITed bytecode languages, which can have guaranteed compatibility on different platforms. What matters is the ease of use of the interfaces that are exposed, such as CORBA or SOAP.

and C++ will still be well known and heavily used.

Most job sites now show Java more widely used that C++. C++ certainly won't go away, but it's use as a general-purpose language is slowly fading.

Re:Standard? (1)

Markus Registrada (642224) | more than 9 years ago | (#12267017)

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 to C functions. That is not true of any other language, and may never be.

Most jobs posted on job sites are fakes, filled with the current popular buzzwords. (This is easily verified by distributing a stellar resume and seeing how many callbacks you get.) When the next fad pops up, the fake listings will use its buzzwords instead. Actual Java jobs that pay more than scale for web page designers remain rare.

C++ book sales are still increasing.

Re:Standard? (1)

Decaff (42676) | more than 9 years ago | (#12270190)

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 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 to C functions.

That is not interoperability - that is low-level library functions. Most interoperability these days is by high-level APIs and protocols: RPC, CORBA, RMI, DCOM, COM+, SOAP etc. These have nothing to do with C - servers and clients can be implemented in any language.

Most jobs posted on job sites are fakes, filled with the current popular buzzwords. (This is easily verified by distributing a stellar resume and seeing how many callbacks you get.) When the next fad pops up, the fake listings will use its buzzwords instead.

Surveys of what developers are actually using bear out the conclusion of the dominance of Java. Check out its growth in Sourceforce - so much for 'fads'.

Actual Java jobs that pay more than scale for web page designers remain rare.

No. Most (real) Java jobs are for J2EE, which is providing serious general commercial infrastructure including behind web apps. Very few people are using C or C++ for this kind of work anymore on new projects.

C++ book sales are still increasing.

But how much in comparison with Java, .NET, Python etc?

Re:Standard? (1)

RPoet (20693) | more than 9 years ago | (#12268301)

You are maybe not aware of the fact that C# is an ISO standard? So part of your argument breaks.

None of the above (1)

wayne606 (211893) | more than 9 years ago | (#12259520)

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 (2, Insightful)

Tobias Luetke (707936) | more than 9 years ago | (#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 (4, Insightful)

darnok (650458) | more than 9 years ago | (#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

Game On. (1)

SoupIsGood Food (1179) | more than 9 years ago | (#12260468)

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 understood and documented in books and scholarly papers, and the number of useful third party libraries, both commercial and OSS, is staggering.

Python would be an interesting choice, too, depending on how much horsepower your UI concepts require. If you're thinking of a photorealistic immersive 3D environment, pick something else. Like fortran on a Cray. But for novel approaches to GUI or command line interaction, check out pygame, the Python libraries designed for game development.

Actually, check out all of the game development systems out there. A GUI and a Game are both a way of interacting with a computer using visual and aural feedback, after all...

SoupIsGood Food

Why do UI researchers need a programming language? (1)

pocari (32456) | more than 9 years ago | (#12260747)

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 receptive audience, no matter how unpleasant that may be. But an SDK implies you have an audience of programmers, and not an audience of UI designers who as a rule wouldn't know what to do with an SDK in any language. If, on the other hand, you have useful tools, then any number of languages would be acceptable.

Re:Why do UI researchers need a programming langua (2, Informative)

Randolpho (628485) | more than 9 years ago | (#12262226)

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.

Have a look at userinterface-description languages (1)

janwedekind (778872) | more than 9 years ago | (#12260967)

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 this aim.

I am using Qt (with C++) and qt-designer myself, which is using a proprietary XML-format for rendering user-interfaces (ui-files).

References:

UIML-tools [uiml.org]

Qt-Designer [trolltech.com]

Qt user-interface renderer [trolltech.com]

Mozilla user-interface renderer [mozilla.org]

Stick with Java (2, Insightful)

turgid (580780) | more than 9 years ago | (#12261135)

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.

some of my best friends are java programmers (1)

museumpeace (735109) | more than 9 years ago | (#12261517)

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?

The author is a liar or a fool (2, Insightful)

mrsbrisby (60242) | more than 9 years ago | (#12261722)

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!) trend, you've got an awful lot of work ahead of you to refactor and rework existing paths to make the new paths possible.

Re:The author is a liar or a fool (0)

Anonymous Coward | more than 9 years ago | (#12266849)

Oh no, not a "liar or a fool", but rather "a PhD candidate doing an internship at a major American UI research lab."

One might wonder why he needs the amateur opinions he'll find here about language choice, but it certainly isn't because he is a liar or a fool.

Road Not Taken (1)

droleary (47999) | more than 9 years ago | (#12262109)

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, which will allow binding to all kinds of different higher-level languages.

The choice is trivial. (1)

Randolpho (628485) | more than 9 years ago | (#12262164)

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, you can do the same stuff in Java using the Bean specification for properties and interfaces rather than delegates, though, so don't get me wrong. If you prefer that platform, go that route. Java also offers cross-platform compatibility, which is a plus if you plan to use *nix over WinXP.

But that whole paragraph was trivial. The bottom line is that what matters is whatever your programmers feel most comfortable programming with.

BTW, I saw the video.... am I the only one thinking about using it for table-top gaming? Add this to my list of things to put in my Ultimate Gaming Room (tm) if/when I get the time/money to create one.

The more I think about it... (1)

Randolpho (628485) | more than 9 years ago | (#12262303)

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.

Most answers seem off topic ... I suggest Java (2, Interesting)

angel'o'sphere (80593) | more than 9 years ago | (#12262327)

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.

angel'o'sphere

My experience with UI prototyping in Java vs. C# (1)

Xthlc (20317) | more than 9 years ago | (#12262940)

- 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 clean up and rearrange code quickly and easily. Visual Studio is a nightmare.

- If you have PocketPC / MS SmartPhones as a target platform, go with C#. If you have to support anything else, go with J2ME. Java support under PocketPC is available but excruciating to use. Most mobile devices support some kind of J2ME profile, but you'll still wind up writing a custom version for each brand and model of device.

I'm not sure about speed. If you're doing non-widget stuff that requires a lot of low-level drawing, you'll probably be using 2D extensively. My instinct tells me that GDI+ is probably faster than Java2D, but I haven't done much low-level GDI+. The APIs are identical, anyway.

Which has better tools for your needs? (1)

bokmann (323771) | more than 9 years ago | (#12264724)

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 feel' architecture (PLAF) so you can write your own. I don't know what kinds of abilities C# has in this area, but Java was designed with the idea to have chameleon look and feels. I would think that this would make it easier in Java to do the kinds of things you would want to do for UI Research.

Asking most slashdot readers to choose between Java and C# is like asking them if they would want to be bitten by a poisounous snake or crushed by a constricter. I bet most responses will say something like "Python with the QT libraries". That may be a valid answer as well.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?