Other than .NET or Java, which language can be used to write an application for Windows and Linux?
Python is a great option to look at with PyQT and wxPython as two widely used frameworks for desktop GUI apps.
Well you said windows and linux, so you could always fall back on C++. A lot of good desktop apps are done with it.
Depends on how you define a GUI application.
You could use HTML/Flash/Flex/JavaScript to create an Adobe AIR application that could run like a normal application..
You could reverse your question : what toolkits are there, and which languauges do they support?
For Example GTK : (from wikipedia)
C GTK+
C++ gtkmm
Ruby ruby-gtk2
Python PyGTK
Java java-gnome
.NET Gtk#
PHP PHP-GTK
Perl Gtk2-Perl
You can find support for many languages if you explore these other widget toolkits :
Juce — An extensive cross-platform UI toolkit
FLTK — A light, cross platform, non-native widget toolkit
FOX toolkit — A fast, open source, cross-platform widget toolkit
GTK+ — The GIMP toolkit, a widget toolkit used by GNOME applications
IUP_(software) -- IUP cross platform static/dynamic library C/LUA, Lua (MIT) licence
JX Application Framework
Microsoft Foundation Class - The most commonly used widgeting toolkit for Windows.
Motif
Object Windows Library & OWLNext
Qt — A widget toolkit used by KDE
Standard Widget Toolkit — SWT for Java
Swing — Java widget toolkit
Tk — Toolkit part of the Tcl - project and often used by Perl and Python programmers
Ultimate++
Visual Component Library
wxWidgets — A free widget toolkit
XForms
Ruby Shoes. It is the prettiest API I've ever seen, and it runs on Windows, OS X, and Linux.
I'm a bit surprised no one has suggested REALbasic, as it's in a very similar vein to .NET and Java (an IDE that is very much a cross platform clone of Visual Studio, and that started out as a Java development tool on the Mac), not least as they regularly run adverts on Stack Overflow.
The language itself is 'OO VB'. Not quite VB.NET, but very similar. Personally, I don't like the language, but as an environment for graphical application development, it's great regardless. It has some bugs, but it's still quicker to work around the bugs than implement the same UI on 2 or 3 target platforms (unless your app is a huge project that justifies writing your own GUI framework).
I would probably leave heavy lifting to external components written in C/C++, but it has full and very functional API's, including everything from a high level SOAP client to raw TCP sockets as well as 2D and 3D (including OpenGL surface) API's.
You could also use Mono - and use C#, for example - but with GTK instead of WinForms, using Mono Develop (I suggest this as technically it's not ".NET", but you may have already considered it). For GUI apps, it's pretty mature on Windows and Linux, as long as you build your app with both in mind from the ground up.
- Every programming language (or more precisely every programming language execution engine) which can interface with native code can be used to implement GUI applications. This alone already includes pretty much every single programming language ever created in the last 60 years, including but not limited to C, C++, Objective-C, Objective-C++, D, Eiffel, Fortran, Pascal, Modula, Oberon, Go, Haskell, OCaml, Python, Ruby, Perl, PHP, Tcl, C#, VB.NET, Java, Scala, F#, Newspeak, Animorphic Smalltalk, Eiffel, Lua, Potion, Falcon, Dao, Nimrod, Genie, Vala, Scheme, CommonLisp, Cobol.
- Every programming language that runs on the Java platform can be used to write GUI applications. This includes about 400 languages that we publicly know about, plus who knows how many languages that are not publicly known. This list includes Java, Scala, NetRexx, Python, Ruby, PHP, ECMAScript, Groovy, Fan, Clojure, JavaFX, AspectJ, Fortress, Cobol.
- Every programming language that runs on the CLI and/or .NET platform (hint: .NET is not a programming language, it's a marketing term for a combination of a CIL execution engine, CLI implementation, CTS implementation, BCL implementation and a framework) can be used to write GUI applications. This includes about 200 languages that we publicly know about. This list includes C#, VB.NET, F#, Eiffel.NET, Spec#, Sing#, X#, Polyphonic C#, Cω, Ruby, Python, Perl, Tcl, PHP, C++, SABLE, Scheme, CommonLisp, Clojure, Fan, Scala, Cobol, Cobra, Perl.
- A lot of programming languages bring their own GUI framework for writing GUI applications, for example Tcl, Newspeak, Dolphin Smalltalk, Squeak Smalltalk, Delphi, Rebol.
And that's just the ones that I could think of off the top of my head.
One important thing to take in account is your previous experience, that is not a minor topic, because mastering a programming language takes time.
Said so, I love Smalltalk in any flavour, so you can select (in Smalltalk world):
- Dolphin Smalltalk (Is Windows native, but the exes works on Linux under Wine)
- Visual Works
- Visual Age
- Smalltalk/X
- Squeak/Pharo
They are the main Smalltalk's, and are named in no particular order.