views:

214

answers:

9

Hello!

I want to know what's the best technology to develop desktop applications considering this:

  • It's to run only in Windows.
  • I do not need to connect to a DB or to the web
  • The final application has to be run from a .bat file
  • I'd like to avoid installing additional frameworks like .NET, I'd like the application to run on a basic windows installation.
  • I'd like to have a fairly simple way to create the GUI.

My first approach would be Java since I'm more familiar with it and most people commonly have Java installed. But I'd like to know your opinions on this.

Thank you

+8  A: 

Delphi

  • Native Win32 executables
  • No additional frameworks required
  • Very easy to create GUIs very rapidly
  • Very fast
  • Unlimited possibilities (you can use any function of Windows API, COM objects, you can even inline assembly)
  • A very large community
  • A lot of free components available
Andreas Rejbrand
What language do you use here? And what IDE?
Delphi (aka Object Pascal) and Delphi
Julien Lebosquain
oh. Sorry. Didn't see the Delphi part!! xDWell. Delphi is not an option...
@tr-raziel: why not? What good reason would there be against Delphi??
marc_s
Delphi is exactly what you want regarding your given points. It's fast in development through it's RAD approach, delivers native executables and is easy to use and learn.
Sebastian P.R. Gingter
Basically because I don't know anything about Delphi at all... I'd need to be pointed out to some good IDE and tutorials...
@tr-razel: Delphi comes with a great IDE, just like Visual Studio.
Andreas Rejbrand
And what a bout the GUI part? Is it simple and good looking?
@tr-raziel: It is native Win32. All standard controls are pure native Win32 controls. Themed, of course. (Unless you disable visual themes.) Creating professional-looking GUIs cannot be easier. Drag-and-drop.
Andreas Rejbrand
+1  A: 

If you're doing a native Windows application that doesn't rely on any framework, you should avoid Java as well. Go for something compiled, such as C++.

Gert G
Ok. And what IDE should I use? What about the GUI? Is it easy to develop using C++?
Go for Visual C++ : http://en.wikipedia.org/wiki/Visual_C%2B%2B Just a quick search: http://www.ucancode.net/Visual_C_GUI_Development_Tool.htm
Gert G
A: 

Java is an acceptable solution, although launching a VM can have significant overhead, so it may not be a good fit if your app does only a small bit of coding. Really, a good answer would require knowing what the purpose of the app is.

mcherm
The app is simple. It's purpose is to prevent 3/4 buttons and a drop-box. The actions the buttons perform are basically looking into the folder the application is in and search for some files and rename them.
In that case, I would agree with what others have said: .Net is your best option. The launch time on Java would be long enough to be annoying.
mcherm
+8  A: 

Firstly, the best platform is often just the one you know best - you'll be able to do better work faster if you know the system already. You probably won't need to buy tools you don't already have either.

Secondly, what "windows"? .net is included in Vista and Win7, and is installed on a fair percentage of XP machines now. If you know Java then C# would be a simple learning curve and gives much better access to WinForms and a higher performance end result. If you don't care about WPF and bells and whistles, you can develop for .net 1.1 or 2.0 which minimises the chance of end-users having to install anything new. Another advantage of C# is that you can get Visual Studio Express for free. And .net is a better career path than a lot of other options, if you're thinking of learning new things.

Java isn't ubiquitous, so if you're going to force the user to install something anyway, then that opens up many other options.

Jason Williams
It will probably run in Vista and Win7 but mainly it will be in XP. Does XP come with a .NET framework? Which is it? 2.0?
@tr-raziel - XP doesn't come with .NET (the OS predates the framework), but it will be installed on a lot of machines by now.
ChrisF
P.S. Another point in favour of .net or Java is that you don't have to do anything to support both 32-bit and 64-bit PCs - something that's a real hassle in a compiled language such as C++.
Jason Williams
A: 

I'd like to avoid installing additional frameworks like .NET ... run on a basic windows installation ... most people commonly have Java installed

It seems to me you are contradicting a bit. Java is not always installed, .NET is not always installed. However, at least Windows 7 comes with .NET 3.5 SP1. I'm not sure about previous Windows versions. If you target an older .NET framework, chances are it will already be installed. It may even be more likely than Java.

If you really don't want additional frameworks, then you have to go with natively compiled code. Visual Basic (not the .NET variants) would work, but it has been dropped in favor of .NET. You can use C/C++, but I haven't used it for GUIs, so I don't know much about that end. Delphi may be the best option at this time.

Nelson
+2  A: 

Qt

It has the advantages of compiled code with great GUI tools.

Qt is cross-platform, and it does not require additional software to be installed. The syntax derives directly from c++. Their reference documentation is great.

One major drawback of using Qt is that your SO community will be much smaller than if you went with a language like c# or Java.

Ami
Does Qt require some additional software like .NET to be installed in order to run the application afterwards? I've never learned Qt but I'm fairly good at Java. Do you think I'll be able to learn Qt fast?
I addressed your question in my edits.
Ami
Qt doesn't require anything except the Qt DLL's you used, which you just put in your application folder.
Lucas
+1  A: 

I think .NET would be much wiser choice than Java. .NET runtime is included in Service Pack 2 for Windows XP. Moreover, Java does not seem to be good tool to write desktop applications. Historically, Java focussed on server applications. Swing (although it improved a lot) still feels somewhat alien everywhere. SWT, on the other hand, is not included in standard Java.

There are almost no desktop applications in Java (except Java development tools) and there are plenty in .NET.

If I were you, I'd consider (in that order):

  • C# + .NET
  • C++ + Qt if you can afford bundling a few additional dlls
  • C++ + some wrapper around WinAPI (MFC or similar), if you want to avoid any additional libraries
el.pescado
A: 

I say .net as well. Included with Visual Studio is the ability to create a Setup Project, which will automatically create an installation file for your project, and one of the options when creating that is to check if the proper .net version is installed.

If it's not, it goes out to the internet and downloads and installs it automatically.

Someone would have to have a VERY old machine not to have .net installed already. I don't even give it a second thought.

larrybud
A: 

One option which has not been mentioned is to go with Python, and wxPython. Add in a utility like py2exe and you can get a native windows exe that you can redistribute in whatever way you like.

Its been a while, but I used this particular combination of tools a while back to distribute GUI apps internally, and was pleased with the results. You end up with some nice features when you go this route:

  • Object Oriented (which would be nice coming from Java)
  • Excellent support for Win32/COM/Whatever (via the python libs)
  • wxPython includes a perfectly functional IDE
  • The wxPython GUI elements are based on wxWidgets, and include all of the GUI components you would expect, plus (if memory serves) the API is reasonably straight forward.

So, using python, wxPython, py2exe, and a installer builder (like the Nullsoft installer), you've got a nice toolkit available.

ckramer