views:

423

answers:

9

I'm a long-time Mac user making the switch to Ubuntu. I have programming experience in Objective-C and REALbasic.

I want to develop native looking applications that will look pretty in the Gnome environment that Ubuntu uses.

Three questions:

  1. What would fit better for me - Java or Python (I'm happy to learn something else if it is a better fit)

  2. Is there a functional equivalent on Linux to Apple's Interface Builder for designing an app's interface?

  3. Can anyone suggest a good (not overly complex) IDE to use?

Thanks in advance,

+2  A: 

My choice for an IDE is Netbeans:

  • multi-language (Java, Python, PHP, Ruby etc)
  • integrated Matisse GUI builder (Java, Swing-based) drag and drop widgets, it is very mature. You can make the Java UI app looke native on ubuntu using Swing Look and Feel set to GTK.

With Python you would have to use a GUI Toolkit binding, I dont know about GUI builders in this area.

clyfe
+2  A: 

To make things look pretty in gnome, you might want to use the gnome ui toolkit. You can design your gui in glade. Bindings are available for most languages.

DiggyF
+1  A: 

You might also consider looking at vala (http://live.gnome.org/Vala). The syntax is similar to c# or java and it compiles to c code that uses the gobject runtime, so in my opinion it is the perfect match to create gtk/gnome applicatons.

Jörn Horstmann
+1  A: 

Can't say anything about gui interface builders, but:
1. Java has better IDEs. But Java is not as wide-spread as Python on linux.On ubuntu, for example, python is preinstalled.
2. For your own scripts|small apps Python is way better than Java. Java has overhead code, which can be useful and convenient in enterprise development, but useless and painful in small apps.
3. Java is more server-side language, so you experience in creating Swing/AWT GUI with it will probably be useless.

foret
outrageous slander :)
willcodejavaforfood
care to explain? hate this kind of comments.
foret
1. The problem of installing Java on Linux is practically a non-issue if you release your software as a distribution package. 2. Agreed, Java is relatively verbose. 3. Yes, I feel that there are more Java server-side programs, but it is a stretch to say that experience in creating Swing/AWT GUIs is useless - many GUI applications made to manage these server-side programs are created with Swing.
jhominal
1. I didn't say that it is hard to install Java on linux. It is as easy as installing python. I said that Java is not as wide-spread as python. If author wants to share his work with community, it is important factor. If not, than not =)<br/>3. There was "probably". I know that Swing is used, but it is used rarely in comparison with JSF/JSP, Servlets and other server-side stuff. How many desktop java apps do you know, except, maybe, installers, db clients, server-config clients? I can think only about Netbeans, thats all.
foret
1. What I meant is that if he distributes his app as a `.deb` package, he can specify a jvm as a required dependency - making the whole installation of his app one-click, whether the user has or does not have Java installed. 3: Publicly available software: Eclipse, RSSOwl, jDownloader - 3 examples that I use every day. Also remember off the top of my head that I used a NWN save editor and an RPG character sheet maker both written in Java. Non-publicly available: I worked for two companies that were relying on Java and in which all internal GUI software was thus written in that language.
jhominal
1. Pretty big dependency, don't you think? I will refuse to download small app if it requires JVM, which i don't need.3. Eclipse - SWT, not AWT/Swing. However i take my words back despite the fact that i still think that java desktop gui is one of the least used desktop gui i know.
foret
+2  A: 

If you want to target Gnome, I would recommend using the GTK.

  1. GTK has a lot of bindings. Given your background in Objective-C, I would recommend Vala (which seems to basically be C with some high-level additions to fit the GTK object system), C++, or (if you really feel like it) plain C. Don't let such a "recommendation" stop you from experimenting with other languages though.
  2. Glade seems to be what you seek. It ouputs XML files, and can thus be integrated into a GTK project in any language.
  3. The IDE that seems closest to GTK would be Anjuta. (It also integrates Glade)

You can also develop GTK applications with Mono (in C#, using the MonoDevelop IDE).

jhominal
Anjuta looks fantastic! Thanks for that link!
Garry
+2  A: 

My GUI toolkit of choice is PyGTK - the docs are great, and you can use Glade to create UIs (the glade format itself is now deprecated, but it does GTKBuilder too...). At the very least, Glade is a good tool for mocking things up if you like to keep it all in code.

PyGTK apps look exactly like typical GNOME apps, and as far as I'm aware KDE users can simply install some magical Qt/GTK themeing engine to have them look like typical KDE apps too. One example of a PyGTK app is SoundConverter.

GObject is the abstraction of the event-driven subsystem underneath GTK, and it has some excellent Python bindings, although there can be a fair bit more boilerplate that Python coders might be used to... which is still 10¹³x less boilerplate than any other language :P

Pure GObject is great for the non-UI parts of your app (the M in MVC, in other words). Set up your signals and properties, and just connect them up. This tutorial shows you how to use it.

detly
A: 

Take a look at 'Quickly'

https://wiki.ubuntu.com/Quickly

Never used it but may be close to what you're looking for

Matthew Hegarty
+1  A: 

My personal preference is for Python. I have done Java development in the past, but really do not like it - Java syntax is massively verbose which destroys readability, and it lacks features that I think are essential for any modern programming language such as first-class functions and closures. Without these features it can take a huge amount of code to do things that are trivial in a modern language.

Python is a good fit for linux development. It is pre-installed as others have said, and many Linux utilities are written in it.

You have a wide choice when it comes to GUI development - wxPython , PyGTK and PyQt are the main contenders, and there is also Tkinter which is a bit old fashioned but still usable. PyQt has the most restrictive license (free for non-commercial use, but you need to pay if you want to sell PyQt applications). The underlying Qt C++ code is LGPL however, and Nokia (owners of Qt) are working on their own open source Python bindings called Pyside.

wxPython has several GUI builders, such as wxGlade and Boa Constrictor. For PyQt you can use the excellent GUI builder that comes with Qt.

Dave Kirby
A: 

For gnome i would recommend mono since mono is heavily in use there.

atamanroman