views:

508

answers:

12

I am new to programming. I'm studying Computer Science, and programming is probably going to be a career I'm going to pursue. Next semester we're going to have a large project where we are going to program Graphical User Interface (GUI) applications and we're allowed to pick our own language and platform.

I have to say that I'm not so happy with Swing and AWT in Java. I'm looking for a new language that retains the ease of programming that Java offers, along with the ability to easily create graphical user interfaces. Language/Platform suggestions for both Linux and Windows are welcome.

+2  A: 

You might want to look at Groovy, it provides a nice dynamic wrapper around java which makes doing GUI work a little easier and can leverage your existing java knowledge. Though even with groovy, swing is not exactly the easiest toolkit to use.

For more on GUI development with groovy see GUI Programming with Groovy

Bryan Oakley
+1  A: 

C++ with wxWidgets! *grins, ducks, and runs*

Chris Jester-Young
+8  A: 

C# and .NET is a great choice, especially if you want a language that is a lot like Java.

For starters, download Visual Studio Express (free), and you'll be able to create Windows Apps with C# and .NET. GUIs are as easy to create as Dragging controls on to a form.

You can also use C# to assist in programming on the Linux platform with an open-source port of .NET, called Mono.

George Stocker
As the original poster is primarily on Linux, I'd add that this would have to be via Mono, using either the Gtk libraries or the Mono port of Windows Forms.
itowlson
+4  A: 

I always like the way GUIs were done in Delphi. But that's Windows stuff. C++ and Qt for you?

Peter Perháč
Never heard of Qt before, but after a little tour on wiki I have to say it looks lovely! :D Thanks
Johannes
+1  A: 

You might want to consider Tcl/Tk. About the only negative thing people say about it is "it looks ugly". That part is debatable -- there's another question here that tackles that issue. Most people who are experienced with Tk consider it the just about the easiest GUI toolkit out there. That part is also debatable, though I'm part of that school of thought. I've used MFC some, raw X, Motif, Swing, Visual C and a couple lesser known toolkits and would choose Tk over those in a heartbeat.

If Tcl's not your thing there are Tk bindings for other languages, for example Python and Ruby. For more on tk you might want to check out TkDocs which shows examples in Tcl, Ruby and Perl. It is lacking Python because python integration is a little behind the curve, though python 2.7 will be up to speed with modern Tk very soon.

If you're looking for easy to learn and use, and cross platform, IMO Tcl/Tk is a good choice. There's also no other language with a better distribution strategy. If you're more concerned with eye candy than functionality or productivity you might want to look elsewhere.

Bryan Oakley
I'll take a look at it, thanks for the tip :)
Johannes
Indeed, Tk gets objecty gui, with good i18n and obscene portability right from decades of honing. TCL is also the perfect language for using Tk (not surprising though) because tcl lends itself to Domain specific languages.
TokenMacGuy
+2  A: 

JavaFX is a relatively new technology for Java GUI development. I haven't used it, but it's supposed to be a lot better than Swing. By better I mean easier to use and more powerful.

It might be worth checking out if you already have experience in Java/Swing.

Andy White
+4  A: 

Bear in mind that Swing isn't the only choice for Java GUI development. There is also:

although Swing is by far the most popular. It is however probably the least modern.

Other than that you have:

cletus
I'm currently using eclipse. But I'll definitely take a look at Netbeans. Also I have a couple of times thought about learning Python (because my friends use it instead of java), so thanks :)
Johannes
You're talking about the IDE. Eclipse and Netbeans use their respective libraries/platforms but that's different. This is about the platform not the IDE.
cletus
I sure would love to know why this was downvoted.
cletus
A: 

There are some people who seem to really like Flex.

The one problem with it is you either have to lay out the cash for the development environment or hope you can complete your project on the 30 day trial.

Aaron Maenpaa
Gotta be free :(
Johannes
+2  A: 

While I've been a professional Swing programmer for years, I would recommend a web UI framework especially if you want to pursue this professionally. Here are my suggestions based on personal experience:

I would highly recommend checking out Flex -- it's completely free if you are a student (both the SDK and the FlexBuilder Eclipse IDE). You can use it to create web UIs or desktop applications via the AIR platform.

Alternatively I would check out the Google Web Toolkit. All development is done in Java, and the UI components generate JavaScript for doing AJAX style development. I've had good experience with it, but the standard library of UI components is somewhat limited. I've found SmartGWT to be a great addition that integrates easily to provide a richer library of components. If you go this general route of HTML/JavaScript also check out JQuery.

Chris B.
A: 

Definitely, Delphi.

Why? Because if you have never programmed GUI it will give you a very deep knowledge about how this kind of applications works, without being so complex as another languages + IDEs will.

Also, as it based on Pascal, you will be concentrated on GUI and not in the language itself because (Object) Pascal is really easy, and I think the course you are going to take will have emphasis in this (GUI, not languages details).

Another plus is that Delphi has a lot of components libraries and is very easy to build a component by yourself (in a really easy language, as I said), so you will be very productive with the tools at your hands.

With Delphi you can build for Windows native code o .NET platform, too.

At the end, you can learn Delphi as a beginner's tool, and move forward when your knowledge about this kind of applications has grown up.

eKek0
A: 

You can take a look at javaFx

Nicolas Dorier
A: 

Shoes is a toolkit for programming GUI apps in Ruby. It works cross-platform. If you get creative, you can do some really complex stuff with it - check out the-shoebox.org.

Sarah Mei