views:

628

answers:

13

hello,

my background: i've been developing web applications using php and javascript for the past ten years. before that, i've developed applications using turbo pascal for DOS. in my opinion application and web application development are two different kinds of development (at least it's what i think when i remember back the old days of DOS application development).

now i am in the need to go back to "normal" application development for various reasons. the application i want to build needs a GUI and it has to run on osx and windows. as mac os user it would be very nice for me to get an application as result, that really feels like an osx application. i don't need any special UI components: an explorer/finder like tree, a datagrid and some form-elements would be enough for my needs.

now the problem is, that i don't know where to start: i would classify me as newbie, because it's that long time since i last developed anything other than a web application. are there any recommendations of programming languages and gui toolkits with a not to steep learning curve? or can you recommend any book i should read for getting into cross-plattform osx/windows app development?

many thanks!

thanks everyone! i think i'll have a look at realbasic!

+2  A: 

You may be interested in the following questions and answers:

and many others suggested in the Related sidebar of these questions.

Some answers suggest gtk (which is used by cross-platform gimp). Others suggest native approaches. Some suggest that a Mac is a nice platform for developing for Mac OS X, Windows, Unix and Linux.

mouviciel
A: 

If you need your code to be cross platform, you would have to go with something like QT.

Although, I would recommend using native API for each one (Cocoa for Mac OS X, .NET or the Win32 API for Windows). User experience will be much better. But of course, that will cost you more money in terms of developers hours.

Pablo Santa Cruz
I don't think QT (requiring C++ knowledge) is a good choice for someone who claims to be a "newbie".
Paul Lefebvre
+1  A: 

Whilst it might seem tempting to use a language thats platform independent and allow you to write the app once and use anywhere, you will undoubtably be sacrificing something on each, particularly in the UI and user experience. If you can your best creating something using a native API that lets you take full advantage of the features of the OS to make your application shine.

Sam Cogan
A: 

I would definitely go for C++ and Qt, the code you write once will compile and run without problems on Windows, Mac and Linux. The new IDE that comes with Qt - Qt Creator is brilliant, works and looks the same on Windows, Mac and Linux, you don't need to anything else to start writing cross-platform applications.

I tried WxWidgets but didn't find good IDE, the best one was Code Blocks but GUI Designer is not perfect and has different problems on different systems and the IDE itself is still under heavy development.

Other options are Java and C# but those are not cross-platform languages, those are platforms themselves. Although you wouldn't need to compile code for each platform there will a lot of different issues on the way...

Raf
"you don't need to anything else to start writing cross-platform applications." is it a compiler and debugger as well?
Andy Dent
Yup, as they say it is "Complete Development Environment".
Raf
+9  A: 

REALbasic.

The language is a powerful, modern OO language that won't be hard for you to adapt to from your vaguely remembered Pascal or current JavaScript. It has most of the power of C++ without the dangerous bits that make debugging a nightmare. You will also find the IDE simpler and easier to deal with than say Visual Studio.

The IDE makes it very easy to throw together a GUI and have it just work on multiple platforms. The Pro version has one of the best cross-platform debuggers I've used and it is easy to just work (say) on a Mac and develop for Windows and Linux, compiling and testing with one click.

There is also a thriving community including many people at your level of expertise so you won't be mocked for being a newbie.

I am a professional software developer with over 25 years experience and currently mainly working in REALbasic, C++, C#, Objective-C and a bit of Ruby. For apps such as you mention, REALbasic is my tool of choice.

edit: I can't believe someone downvoted this but didn't have the guts to add a comment explaining why. I'd heard about prejudice against REALbasic but this is the first time I've encountered it. In what way was my answer inappropriate for this question?

Just to add to my cred, I've implemented cross-platform frameworks used by systems deployed to tens of thousands of end users - I have the C++ cross-platform experience to applaud someone else doing a good job and the REALbasic frameworks are very nice.

Andy Dent
The down voting for no apparent reason except "I don't like this" bugs me about SO. I think it should be required to leave a comment. I do not believe it should be anonymous.
bruceatk
To me REALbasic is the only viable solution for cross platform development. It's not perfect, but nothing else comes close. They are actively maintaining it with frequent updates and it is quite easy to create an application on Windows and have it work on a MAC or Linux.
bruceatk
I have the Windows version and use a MAC mini dual booting Ubuntu and OSX for testing.
bruceatk
So Java would not be a good way to go for cross-platform development? (Besides the difficulty factor versus Basic, of course.)
Michael Todd
It seems to me Java has a place in this question if the user has a background in any of the C-variants. But, no, I wouldn't recommend it for a self-professed newbie, even taking the PHP dev work into consideration.
Philip Regan
@Michael and Phillip. I am actually doing most of my programming for my day job in Java at the moment. For cross platform desktop apps I do not recommend it. While you can certainly do it with Java and C++, there is no comparison to using REALbasic. I prefer the painless way.
bruceatk
@Michael and Phillip. I even looked at Eclipse's Rich Client Platform (RCP). Just not as good an experience as using REALbasic, but it is what I would recommend if you want to use Java
bruceatk
i have a question regarding realbasic: i think i would go with the cheap personal edition, first. if i would like to connect to a mysql-datbase, would i have to really buy a the professional version or are there third-party implementations for this? thanks!
harald
You only get the base classes for database connectivity in the Pro version (about to drop to US$300). No 3rd party can write plugins without them. The MySQL plugins are changing to allow full commercial use - http://www.realsoftwareblog.com/2009/03/mysql-plugin-for-realbasic.html
Andy Dent
Note that the MySQL commercial plugin has not yet appeared, only the Community plugin is currently being shipped.
Andy Dent
A: 

If your GUI's simple enough, why not just create a generic GUI layer, then program to that? Compile a version for each OS using native widgets. That's the best way to ensure native L&F on multiple platforms.

Both the Qt and REALbasic suggestions are good, although they tie you to that particular technology (which I can't imagine would be an issue in this particular case).

Personally, I'd go with Java, because it's worked for me before (I had an app that ran on my PDA, my phone and my desktop), but it doesn't use native widgets.

TMN
Java can indeed be nice. It's free, and Eclipse is a great editor. Yet, it doesn't have a interactive GUI editor as REALbasic does, I think.
Thomas Tempelmann
NetBeans has a GUI editor, unfortunately since I haven't used REALbasic I can't compare the two. I do know it's bit more cumbersome (or perhaps "less seamless") than Visual Basic, if that's any help.
TMN
+4  A: 

The best cross-platform tool I've dabbled in with a relatively small learning curve...especially if you're familiar with Visual Basic...is REALbasic. With REALbasic Pro you can compile a program to target Win32, Linux, and OS X from the same codebase, as long as you're not using OS-specific calls and features (which you can do with plugins or direct calls). Their support has been pretty responsive to my questions, the personal edition (which compiles to only the single target platform you'd downloaded the IDE for) is free for Linux and inexpensive for other platforms, but really you might want to download and try it out. One IDE, relatively inexpensive, and can compile native applications on OS X, Windows, and Linux...it's less hassle, and for me that's important when you want to get a job done.

Bart Silverstrim
+4  A: 

I'd advise against C and Qt and would also recommend REALbasic.

With your background in Pascal and probably JavaScript you'll feel much more comfortable with REALbasic. I've done a lot of coding in Pascal and C/C++ - where Pascal guides you to avoid programming mistakes, C lets you step right in, even invites you, and then you'll have a hard time figuring out why it went wrong. Qt is a very abstract framework and requires you to learn a lot before you can get something working, just like with C. When compared to the easyness we used to have with TP back then.

RB is much more like Pascal in this regard. And its IDE is quite modern in regards to supporting your programming, with an easy-to-use GUI designer, straight-forward editor to fill in the gaps for handling UI events, code completion, etc.

Only when you get into huge program sizes, RB loses some of its appeal because it is missing tools to give you a good overview of complex class interactions etc.

Another thing is that Qt is more likely to cause ugly-looking Mac apps than RB would. RB visually guides you to get it all aligned nicely - in Qt you have to work with numbers, offsets, etc. to position your objects (at least it was that way when I used Qt 2 years ago).

I've written quite a few x-platform apps in RB and am pretty happy with the results.

You won't probably write those super-nice looking apps that compete with the best on the open small business market, but if you just want to get some solid code working, with an easy-to-design UI that's acceptable to the average user, give RB a try.

It's not free, though. But its rather small community is on your side - they're eager to help, instead of bashing everyone who's trying to talk sense :)

Thomas Tempelmann
+3  A: 

I'm new here but picked up on this thread through the REALbasic User Group. I think my position was similar to yours. I did website design for my work, using mostly javascript (with a little php, not much). I had a Pascal and BASIC background. I'd dabbled it C but didn't like the level of detail you needed to monitor it. It reminded me too much of assembly (which I still have nightmares about from my high-school/college days).

I was looking for a cross-platform language, with a familiar feel to it, but initially started with VB because it was free. I prefer programming in MacOS however, so I tried REALbasic. I found that REALbasic's UI builder was much easier to use than VB's. I'd echo other comments that the community is the most responsive of any user groups I've been involved with. I've since used REALbasic and my Mac to make several programs that over 100 users use every day at my work (on PCs, mostly XP and 2000). I've received compliments on the polish and ease of use of these programs. You DO have to remember to adjust the 'little' things to make it look right cross platform (ie: default button placement is opposite on PC vs. Mac, button sizes are different on Linux, etc). Many people have donated custom classes that do this stuff for you though.

People seem to assume that a "BASIC" language cannot be powerful enough for their purposes. While it is BASIC at it's core (with For..Next, Do..While, and If..Then commands), it ain't your daddy's BASIC. It's much more OOP than anything else I've used, based upon an event-driven structure, which for me was easy to pick up. They have a free trial, so grab a demo and run through the tutorial. If you get stuck, ask for questions on the NUG or Forums at the website and you'll likely get an answer quickly.

randyy
+2  A: 

As Andy Dent and others here have indicated, for a newbie to create cross-platform applications it is hard to beat REALbasic.

Sure, there are plenty of other cross platform solutions such as QT (C++), Java, .NET (to some extent) and wxWidgets but they are not something a beginner would be able to use effectively.

I have many years of professional development experience in a wide variety of languages and technologies and I prefer to use REALbasic most of the time.

With that said, you might also consider Runtime Revolution or Adobe Air.

Paul Lefebvre
+2  A: 

Hi all,

I wholeheartedly recommend RealBasic too. I have been using RB for about 8 years now and find it to be a perfect tool for my Companies development needs, from small apps, to large multi-user systems.

It is perfect for beginners and those that are getting back into programming, and also for professional developers.

Highly recommended.

A: 

Adding a late comment here:

Take a look at Revolution. It's sort of like a modern Hyper-card on roids. And it's cross platform (Mac, Linux and Windows). This is a serious competitor to RealBasic and is coming on strong. Though I still use RB (and like it) I'm giving Revolution a serious look at.

Stephen Cox
A: 

I would also look into either Realbasic or Revolution. They both create cross platform native apps. Personally I think Realbasic would be a better choice as it is very similar, language wise, to VB. You can learn some valuable skills with RB and it can grow with your experience. I have been using VB and RB for more then 10 years combined and I think you will be happy.