Fog Creek Software
Discussion Board




Best language for GUI apps w/ web services?

Hi there. I'm a technology enthusiast, and I'm particularly interested
in emerging internet/web technologies. I have some experience with PHP
and Java, but I'm very far from an advanced programmer. I would love to
take advantage of emerging internet technologies like RSS, and
SOAP-enabled web services from the likes of Google and Amazon.

Is there a development environment and high-level language that would
be ideal for constructing simple GUI applications very easily, very
quickly, and that would be ideal for manipulating data from these
various internet sources? I want to be able to say "hey that's a neat
web service over here...hey that's a neat one over there...let's put
'em together in a simple but terribly useful way and construct an app
out of it."

What's my best bet? Thanks.

Akilesh Ayyar
Wednesday, June 02, 2004

As you can see I copied and pasted the text in... sorry about the formatting :)

Akilesh Ayyar
Wednesday, June 02, 2004


Visual C# .net

A Dingo Ate My Baby
Wednesday, June 02, 2004

You're actually looking for C# and .NET. It's an exact description of what can be done with them. :)

Green Pajamas
Wednesday, June 02, 2004

Having worked with web services, will have to agree with the .NET environment for development. I had a web app using SOAP/HTTPS and wanted to create clients. With Java I had to do some finagaling to get it to make the call, and include the SSL cert in the right places. With .NET I simply pointed Visual Studio to the URL of the WSDL file, and it was another object in Intellisense almost instantly.

Disclaimer - I haven't worked with Eclipse, so I'm not sure if someone has written a plug-in to make it easier to develop with.

But the .NET environment is definately suitable for quick and dirty apps like what you mentioned. If you have the budget I would go for that.

CF
Wednesday, June 02, 2004

In my opinion, .NET has been the quikest and easiest thus far.
The others I've tried is Delphi and Jbuilder. 
.NET beat them hands down as far as ease of use.

Steve-O
Wednesday, June 02, 2004

Everybody seems to be leaning towards .NET as the premier suite of tools for application development.

Thank god I am sticking with Java

Berlin Brown
Wednesday, June 02, 2004

"Thank god I am sticking with Java"

Because...?

I mean, just posting "everyone is lost but me" without supporting arguments is generally not constructive...

Philo

Philo
Wednesday, June 02, 2004

You are right, thank you

Berlin Brown
Wednesday, June 02, 2004

Ohhh! Burrrrrrrn!!

anon-y-mous cow-ard
Wednesday, June 02, 2004

Yea, I fold easily, who has the energy anymore?  I could put more energy into putting forth my position on why I am right, no, I am wrong, so I will just concede defeat and comply with your request(I am learning new things, being wrong is one of them).

I have seen people do wonderful things with Java and swing, and now with Java 1.5 beta.  The java toolkits can be confusing at times, but once you understand where the Sun engineers lead you in terms of user interface design, the Swing widgets make sense and interfaces can be created easily.  I have done work with database interfaces in swing, tables, trees, window-panes, menus are very easy to implement.

Answer: java, and of course with java, you can operate in linux if you wish.

(In case you can't/don't want to install MONO)

Berlin Brown
Thursday, June 03, 2004

Grasshopper learns from Master that Cross Platform very good for this sort of thing. Grasshopper like Java

Grasshopper
Thursday, June 03, 2004

Umm... .NET is becoming pretty cross platform. www.go-mono.com.

Andrew Murray
Thursday, June 03, 2004

No such thing as a cross platform GUI IMHO.  Oh wait the web.  Why not do it on the server side? 

christopher baus (www.baus.net)
Thursday, June 03, 2004

What about something like Mozilla as a development platform? Any opinions on how that might stand up for my purposes?

Akilesh Ayyar
Thursday, June 03, 2004

Dear Akilesh Ayyar,

I think that what you want to do can be done with the SAS System, from SAS Institute ( http://www.sas.com ).

The SAS System is strong on the data-handling side. It connects with all kinds of data sources - if you can call it a data source, chances are that you can access it with the SAS System.

The SAS System can juggle your data, has data warehousing capabilities, statistical, operations research, time series analysis, ...

The SAS System outputs in a wealth of formats.

SAS Institute has been around for nearly 30 years (Inc. in 1976), so it has a mature product line, but also stays current with bleeding edge technologies.

Got SAP? Access it with SAS.
Got XML served through HTTP(S)? Access it with SAS.
SOAP? SAS!
Got CSV files? Excel files? Peoplesoft? ...? SAS!
Want to make a web report of th data you just collected? SAS. Oh, you cant make a decent hard copy from a browser? Spit it out in PDF? Want RTF? SAS delivers!

Fed up with .Net vs Java discussions? SAS interfaces with both ( http://www.sas.com/partners/directory/microsoft/ , http://www.sas.com/technologies/bi/appdev/appdev/ )

Multiplatform: Windows, Linux, z/OS, Unices, ...

The downside of all this is of course the price, and that the wealth of possibilities must be matched by the knowledge of how to use them.

I use SAS in my daily work, and I'm *not* employed by SAS Institute.

The SAS System is a great tool.

Martin A. Bøgelund
Thursday, June 03, 2004

If you decide to go with Java, take a look at Axis.

http://ws.apache.org/axis/

Best thing I've seen so far for Java + WS.

Paulo Caetano
Thursday, June 03, 2004

Sorry not to jump on the Java/.NET bandwagon but I've enjoyed using wxPython for stuff like this. A very nice very clean set of Python bindings for the cross-platform C++ GUI library. I believe there's even an open-source IDE for wxPython, although to be honest it's so clean and easy to code for I didn't bother. Something that'd take a thousand lines of code in Java would probably be a couple hundred.

Advantage is: you can make versions that run /natively/ on Windows, Mac OS X, Linux, etc, using the native widget sets, as opposed to either only really running well on windows, in the case of .NET, or using some ugly and unresponsive AWT/Swing/whatever java uses these days interface on all platforms.

And with py2exe you can make an exe which installs the python interpreter and whatever modules you use, for you, alongside the app.

Matt
Thursday, June 03, 2004

"Sorry not to jump on the Java/.NET bandwagon but I've enjoyed using wxPython for stuff like this."

Yes, but what do you use for calling web services?

I've tried ZSI and SOAPpy. Worked OK for simple types. However, as soon as you start using complex types, forget it.

Paulo Caetano
Thursday, June 03, 2004

Another option is to do the GUI for each platform with the native toolkit.  .Net on Windows, Gtk or KDE on Linux, Cocoa on the Mac.

It's more work, but the advantage is that you have a client on each platform that will make users of that platform comfortable.  Any cross platform toolkit is garunteed to cut corners in terms of what users on each platform expect in a good interface.

Since you are using web services, push as much logic as is feasible into the services themselves.  You may also be able to make much of the model code (as in model-view-controller) for the client cross platform as well depending on the implementation language.  C is accessible from pretty much everything, for example.

Whether this is feasible, of course, depends on the time and resources available to you.

Jim Rankin
Thursday, June 03, 2004

Delphi with RemObjects: http://www.remobjects.com

Herbert Sitz
Thursday, June 03, 2004

What are the advantages of using a software tied into web services over just going completely with a web interface?  (the question was asked before, but ignored)

Clay Whipkey
Thursday, June 03, 2004

Paulo:
I wasn't doing anything terribly complicated web services-wise (and was writing the server aswell as the client), so was okay with SOAPpy, or just hand-rolled XML. *ducks*

Shame though I feel like there ought to be something out there in Python land that can handle the more complex stuff.

Matt
Thursday, June 03, 2004

Clay,

In the Microsoft world this would be called a SmartClient.  You can do the same kinds of things in Java or any other language of course, but I'm not sure if they have a fancy marketing-friendly name for it :)

The major advantage IMHO is that you can make your application usable offline.  Web-based apps obviously require you to have a connection at all times.

Also, thick clients supposedly have richer UI's than web-based apps.  Of course, this depends largely on the developer writing the app...but the range of possibilities is somewhat wider with thick clients.

Do some google searches on thick vs thin client and you should find about a hundred arguments in both directions.

Joe
Thursday, June 03, 2004

Hi, Matt.

"I wasn't doing anything terribly complicated web services-wise (and was writing the server aswell as the client), so was okay with SOAPpy, or just hand-rolled XML. *ducks*"

:) Yes, that makes it easier. I was trying to make a Python client for a jave Axis web service, and didn't have much luck.

"Shame though I feel like there ought to be something out there in Python land that can handle the more complex stuff."

I expect it will appear, sooner or later. With these kind of problems, usually it's just a matter of waiting. The problem is when you can't afford to wait :(

Paulo Caetano
Thursday, June 03, 2004

One thing I never see mentioned is there are oodles of open source bits for Java, and roughly zero for .NET.

Ok, it's not quite that lopsided, but close.  If you're looking for a solution to some web services problem, odds are damn good someone has a Java solution out there that's free to use.

Disclaimer1: haven't used .NET for webservices, but simple sourceforge type searches in the past have given me a good idea of the .NET/Java ratio.

Of course, frequently with open source you get what you pay for, but that's another story.

Chris Kessel
Thursday, June 03, 2004

"Of course, frequently with open source you get what you pay for, but that's another story."

If you're doing this as a business venture, this is probably a good reason to pick a project for which it's easy to buy support, which usually means a popular project.  For example, some of the Apache Java stuff is so widely used, it's probably very easy to find developers who will fix it for you if it breaks, or doesn't do quite what you want.  (Or you can do it yourself, if you have more time than money.)

A big, popular open-source project, as I see it, is the best of both worlds.  If you use a proprietary system (library, language, ...), you have to hope the vendor will fix it when it breaks.  If you use a small open-source system that nobody's heard of, you might have to fix it yourself when it breaks.  If you use a big-name open-source project, you have the option of either fixing it yourself, or hiring one of the gobs of people who's already using it.  (You also get the benefit that if it's so popular, it's probably pretty stable and complete already.)

Eric
Thursday, June 03, 2004

There is a good amount of free stuff available for .NET, you just have to look a little harder for it.  I think gotdotnet.com is more popular than sourceforge for .NET stuff.

Also, there are a lot of OSS or otherwise free GUI controls on windowsforms.net, and codeproject.com has a lot of free code too.  And there are the Microsoft Application Blocks...

As far as web-services specific freebies, I'm currently using a freely available compression library to bzip2 my soap requests.  There are other extensions available as well.

No idea if it comes close to comparing to what's available in the Java world, but it's certainly not a barren wasteland :)

Joe
Thursday, June 03, 2004

*  Recent Topics

*  Fog Creek Home