• Quick note - the problem with Youtube videos not embedding on the forum appears to have been fixed, thanks to ZiprHead. If you do still see problems let me know.

Mac Development Tools Recommendations

Wowbagger

The Infinitely Prolonged
Joined
Feb 2, 2006
Messages
15,660
Location
Westchester County, NY (when not in space)
It is quite possible, that in a few months, I may need to start developing some applications for the Macintosh. However, I am soooo out of touch with Mac development, I figured I would ask around for advice.

What are some of the better software development enviornments to work with, on the Mac? What is the best, closest equivalent to Microsoft Visual Studio, for the Mac, these days? For general applications development, that is.

And, what about languages? I hope I can at least work with Java, for this project. I hope I do not have to resort to C++. (and I know VB and C# are probably out of the question). What other good ones, are around?

Again, this all for general applications development. In the short term, I will probably only need to throw together some easy-to-use shells for APIs provided by other vendors, for various bits of hardware. But, I imagine these things becoming more elaborate and glorified in the long run.
 
The most Mac-like tools are provided by Apple with Xcode. Yet they promote objective C, and I'll accept you have your reasons for not. Perhaps the GUI goodness that is Aqua is not what you need.

You would probably be more at home with Eclipse. Link, an Open Source IDE that is more language and platform agnostic.

HTH.
 
Well, I never tried Objective C, before. But, the problem with strict supersets of C and C++, is that they come with all the baggage of crazy quirks, that modern laguages seek to get rid of, when they start from scratch.

(For example, C++ .NET may grant you automatic garbage collection, but at the cost of weird decorations and identifiers in the code. C# is much, much cleaner for .NET coding.)

I see Eclipse is based on the old VisualAge, which I had played around with, a bit, in the past. And, since it has a Windows version, I can examine its latest incarnation, without even looking at a Mac, right now.

So, thanks for the info!
 
I've messed a bit with Obj-C / Cocoa, and while I'm no real programmer, it seems very clean of C cruft to me. For loops are discouraged, for instance. C++ is possible to use, but then you have to use the deprecated Carbon libraries. In earlier versions of OS X, you could use Java with Cocoa, but they've scrapped that. There are other options with Cocoa, though - Ruby, Python and Applescript.
 
Take a look at NetBeans.
It's a pretty nice java environment (cross-platform).
 
What are some of the better software development enviornments to work with, on the Mac? What is the best, closest equivalent to Microsoft Visual Studio, for the Mac, these days? For general applications development, that is.
Xcode.

And, what about languages? I hope I can at least work with Java, for this project. I hope I do not have to resort to C++. (and I know VB and C# are probably out of the question). What other good ones, are around?
The answer to this question really depends on what you are developing. If you are building a Mac GUI application, your best choice is Objective C, at least for the UI. You can use other languages for the back end e.g. C++, if you like, but Objective C is nice enough that I can never see the point.

For GUI apps there are also bridges to Python and Ruby, but I've never tried them so I can't comment on how good they are.

If you want to use Java, you can use the standard Java graphics APIs like Swing and SWT, but you'll find that the UI you get is sufficiently different from a normal OS X application that your die hard users might complain. If you use Java, I'd recommend Eclipse rather than Xcode as an IDE. It has better support for unit tests etc.

Again, this all for general applications development. In the short term, I will probably only need to throw together some easy-to-use shells for APIs provided by other vendors, for various bits of hardware. But, I imagine these things becoming more elaborate and glorified in the long run.
What are the APIs written in?
 
Objective-C now has garbage collection built in. No weird decorations required.
Ah, very nice. I was going to evaluate it, further, anyway. It seems other sources are converging on this as the language of choice in Mac applications.

Take a look at NetBeans.
It's a pretty nice java environment (cross-platform).
I will take a look at that, too. I shall compare how productive it is against Obj-C, somehow.

Cross-platform would be very nice, for future projects. But, for current needs, we already have a solid code base for Windows, (and hardly any interest in Linux). So, current Mac development can safely stay in the Mac world.

That seems to be where everyone else is pointing towards.

At the Apple store, very few of the Geniuses knew very much about software development. But, one guy (I suspect he was a manager of some sort) did. And, Xcode was all he was showing off.

What are the APIs written in?
Actually, this is the key question. It might vary between vendors. I don't know, yet, which hardware, from which vendors, we are going to support. So, I didn't ask, yet.

It's still early. I figured I would bring this up, now, so I could get a small head start on what Apple programming is like, these days.
 
You could download the FREE Adobe Flex SDK and make an AIR app. For most simple webbish things, anyway. Or just make it a Flash doohicky and leave it on the web page for that matter.

If it needs to tweak hardware and such, probably not so great. Generic audio/video/animation/web stuff, it works fine.

Of course, I'm always torn when I say to use Flash... the Flash IDE sucks. But then again, it pays good.
 
Ah, I remember Hypercard! Waaay back in 1991, which was probably the last time I ever did any "development" for the Mac, I used hypercard to do all sorts of things it was not meant to do! My Hypercard version of King's Quest was not all that great, in retrospect, since you couldn't move the character around the screen. But, it was cute, for whatever that is worth.
 
I used hypercard to do all sorts of things it was not meant to do!

And that was the "insanely great" virtue of Hypercard: it facilitated all sorts of applications, whether intended or not.

Those were the days
(Yes they were, yes they were.)
Those were the ways…
 
Last edited:
You could download the FREE Adobe Flex SDK and make an AIR app.

Barf and barfola. Adobe has done some things right, and for that I salute them. Yet Air, Actionscript, and the related technologies are nothing less than a fetid pile of dingo kidneys, IMNSHO.
 
We're not interested in doing web development on the Mac. Only MacOS apps on the Mac.

And, I doubt we'll be using Flash to do them. Flash is great for interactive animations, that are platform independent (even if those animations are database driven). But, not so much for desktop applications.
 
We're not interested in doing web development on the Mac. Only MacOS apps on the Mac.

And, I doubt we'll be using Flash to do them. Flash is great for interactive animations, that are platform independent (even if those animations are database driven). But, not so much for desktop applications.

Thank you for saying so. "Flash" is anathema.

Yes, I have expressed it, out loud, and across platform. ;)

So much that PDF is a worthy cross-platform standard, so much less is Flash worthy. Never mind the YouTube idjutz. ;) That could be readily done with competent CSS.
 
Barf and barfola. Adobe has done some things right, and for that I salute them. Yet Air, Actionscript, and the related technologies are nothing less than a fetid pile of dingo kidneys, IMNSHO.
Actionscript is a Javascript implementation. There's nothing wrong with it that isn't also wrong with Javascript. Flex is actually quite nice for developing web based applications that run client side. You'd never use it to write a proper native Mac OS X application in though.
 
As I said, it pays good. You hate it? Good. More work for me.

With AIR, you could do the whole desktop application. It provides the local file support. Slap together a Java back-end if it needs a server. NBD.

Yeah, barfola, but seriously, I wouldn't touch native Mac with a ten foot pole. Nor Windows, for that matter. The iPhone is dead to me until there's Flash on its browser.

I can boot up Linux, get the app to work, test it, and know it works on Windows, Mac, Linux, and now PS3. Of course, this last one is more important to ME because I make games.

Or you can sink all your efforts into Mac compatibility and cover...
8.24% of the PC market. Maybe 9% by next year. OK, every percent is about 10 million users, so not small-potatoes, and all those users are STARVED for apps....
http://marketshare.hitslink.com/report.aspx?qprid=9#

Or you can just hit nearly 100% of the PC market at a stroke.

Call me crazy, but I'd rather have a billion potential users than 82 million, just as I'd rather have $1000 instead of $82.

Another approach you can take is make the 'back-end' of the application Java, and the front-end web-enabled and multi-user. You can write one generic 'server' style application and have plain HTML for the front-end, or the pretty colors and instant feedback that users like with a Flash front-end. Or Javascript, or Java. Doesn't really matter.

Written this way, your application runs on ANY OS, and it scales over the internet. Much more powerful than some stand-alone 'me too' gadget.
 
With AIR, you could do the whole desktop application. It provides the local file support. Slap together a Java back-end if it needs a server. NBD.
But the problem is that the application you end up with does not look like a native application on the platform. That's a bug.

Yeah, barfola, but seriously, I wouldn't touch native Mac with a ten foot pole.
Good. More work for me then.

Nor Windows, for that matter. The iPhone is dead to me until there's Flash on its browser.
Great, there are whole vistas (ahem) of software development where you are not competing with me for work.

I can boot up Linux, get the app to work, test it, and know it works on Windows, Mac, Linux, and now PS3.
Can you really? Are you sure about that? You can 100% guarantee that every AIR application you ever write is going to work 100% on all the platforms you name. I know for a fact that if you were to develop an AIR application for the bank at which I am currently contracting, you'll have a few issues with the company approved Windows PCs there.

Or you can just hit nearly 100% of the PC market at a stroke.
with something that doesn't work quite right on any of them because of the compromises your development framework makes in order to be cross platform.

Another approach you can take is make the 'back-end' of the application Java, and the front-end web-enabled and multi-user. You can write one generic 'server' style application and have plain HTML for the front-end, or the pretty colors and instant feedback that users like with a Flash front-end. Or Javascript, or Java. Doesn't really matter.
Some applications are done best as desktop apps and some are done best as Internet apps. If you want to denigrate a whole class of applications just because you prefer not to develop them, you are a fool.

I think Flex is a great technology and I think AIR has a place too but the OP was asking about the best tools for developing MacOS applications. Telling him he shouldn't be developing MacOS applications is not a helpful answer.
 
Of course it IS a helpful answer. It's an option.

As I said, you don't like AIR? Don't use AIR. Use Java. Unless you're going to jump into a big, immersive 3D environment or operate elaborate animation, Java will do the job OK. I'll even grant that SUN is possibly less evil than Adobe is.

All I'm saying is, jumping in and coding Native isn't the only answer. It may be the only thing your client WANTS, or is COMPATIBLE WITH, but that's a different story.

If you can, develop platform-neutral, so that when (not IF) the question comes up, "Can this run under Windows?", the answer will be an unqualified, "Yes." If I target Windows and the question about MAC comes up, the answer is still an unqualified "Yes". Even if there are QA issues, you start the development cycle in ALPHA and work from there, instead of STARTING FROM SCRATCH.

If you have F.U.D. about AIR, you should be pissing your pants if someone wants to use a cross-platform C/C++ library. Talk about instantaneous code rot! Especially if you have a 'team' to work with. Someone won't follow all the rules. Large enough team, MULTIPLE someones. The library changes, the compiler changes, the platform changes, your app probably stops working or stops building. Yay.

Any direction you take the development will have its own relative strengths and weaknesses.

If I were to *personally* target MAC right now, I'd just make a web app or use AIR. Yes, of course I'd TEST it on the Mac, but I wouldn't have to deliberately TARGET the Mac or (shudder) USE a Mac.

If you are already locked into some technology and don't have choices, then asking about 'development tools' is a silly question. You're kind of stuck with whatever they're using. But even then, there are development front-ends that can make life easier.

For an IDE, I like jEdit as an editor, and it will run on the Mac. So will Eclipse, which is a full-blown universal IDE with integrated debugging, a zillion plugins and enough bells and whistles to leave you permanently confused. I personally like command line tools, even gdb. Eclipse is maybe a little off the deep end with GUI features for my taste. Either one will host/build Java applications very nicely. Either one will host/build C/C++ applications or Python applications, or all manner of web scripting languages as well.

Apple themselves recommend Eclipse. So does Adobe (Flex Builder).
http://developer.apple.com/tools/eclipse.html

Eclipse and jEdit are both excellent examples of Java based applications that are INSTALLED on your PC, but they'll run under Linux/Mac/Windows, and most of the less common operating systems without modification. The only difference in the downloads is the kind of installer. With either, you can sit down to any PC and have your development environment up and running, with the settings from whatever other PC you came from.

The days where it MATTERS what OS you are developing and running on are already behind us. Scripting languages are plenty good enough for almost anything. Very soon that 'almost' qualification will be gone.

There is no difference whatsoever to a user with a decent network connection between a well-written 'rich' web application that loads from the company network or internet in an interpreted environment and a native one that you install on every machine that connects to a network/internet server. Well, except that they don't have to install, configure or patch the one that's lives off the server. You update that, and everyone ends up using it. The latest stable version is always just there.

Oh and as far as Flash on Linux and Flash on an Intel Mac, they're essentially the same build. POSIX OS underneath. Minimal dinking to get along with the MAC GUI front-end instead of X/GNOME/KDE. Flash has its own rendering primitives. The core of it works identically, so I'd be supremely confident that something I developed exclusively under Linux would work on a Mac, and shocked if any issues came up.
 

Back
Top Bottom