Best Developer Tools for OS X
NoviceW writes to share that there are plenty of interesting articles written about Mac OS X applications for switchers, but not many guides focused on programmers switching from other operating systems. This guide lists a few of the more prominent tools for Mac developers, what other tools can't you do without?
The static type system of C and the dynamic type system of smalltalk, what a great idea that was.
How we know is more important than what we know.
AppKiDo is invaluable if you're a Cocoa programmer.
Why is X11 listed as PPC and not Intel/PPC?
Also... Why is MAMP listed? Isn't the 'A' in MAMP installed by default even if it's not OS X Server?
I think what's missing is DarwinPorts... that's a nice fast way to install stuff.
Apple's worldwide marketshare continues to slide lower and lower. It down to about 2 percent now. And now you can run Windows right alongside OS X.
What is the point of doing native OS X development? What is the point of wasting development resources on a shrinking niche segment of the market?
If you are a software developer which of these two options makes economic sense?
1) Spend time learning an entirely new API. Spend time learning an entirely new set of development tools. Spend time/money supporting two different versions of your product/app.
2) Include a readme.txt that tells Mac owners to either use BootCamp or Parallels to run your product.
The native OS X market is going the way of native the native Mac game market. Only those companies emotionally attached to the Mac are going to bother with the platform.
Regardless, a day with Xcode will probably scare away anyone who is coming to OS X development for the first time. My god is Xcode a piece of shit. I would probably reconsider dropping support of the Mac at our company if I could watch the entire Xcode team get the shit beat out of them by a mob of long time Xcode users.
(Yes, it really is that bad...)
http://developer.apple.com/tools/sharkoptimize.htm l
'nuff said.
--ryan.
Don't say, "don't quote me," because if no one quotes you, you probably haven't said a thing worth saying.
You know, in the 16 years I have been running UNIX I have really come to appreciate vi. I have tried other tools (Eclipse, Xcode, others I can't remember the name of, Kdevelop probably) but for the sort of programming I do (command line, C/MPI) you just can't beat vi (or more recently vim). Syntax highlighting, the speed of editing, having a few terminals open, keep it simple is my motto and it works. A mouse just slows me down. Of course, if I was doing GUI programming then I would use something like Eclipse (I bought the vi emulator for Eclipse) or Xcode. I still remember learning Motif in the early 90's and it was a nightmare.
:-)
Anyway, like any good *nix, OS X comes with vim pre-installed. Just make sure you have X11 and it is business as usual just like it was back on my old Sun Sparcstation 1 running SunOS 4.1.3
"I have the attention span of a strobe lit goldfish, please get to the point quickly!"
"Cyberduck is an open source FTP and SFTP (SSH Secure File Transfer) browser licenced under the GPL with an easy to use interface, integration with external editors and support for many Mac OS X system technologies such as Spotlight, Bonjour, the Keychain and AppleScript."
It rocks!
http://cyberduck.ch/
I use Free Pascal on my Mini which gives me access to existing Delphi code as well as native interfaces. (Code Warrior Mac/Carbon code is easily converted, as Carbon headers come with it)
I have ported some GUI apps using Lazarus (Lazarus.freepascal.org), but the Carbon native port is not ready, and these run under XDarwin.
O'Reilly's (no relation) has a great site for Mac tech/programming at MacDevCenter.
Also, Server Logistics, a Mac based web hosting company with cred, offers pre-packed mySQL for free. Gotta love that Aaron Faby.
It's not offtopic, dumbass. It's orthogonal.
First, they have X11 listed incorrectly as a PPC app. If you have an Intel based Mac then the installation CDs includes a pkg of X11 as a Universal app.
...
... for all of your SVG editing needs.
... for all of your raster image editing needs.
... and I am surprised that they left Eclipse off of the list. While Xcode is preferred for doing OS X development, it is still worth a mention :-)
Once you have X11 installed then you can also get
1) Inkscape (Universal)
2) Gimp (Universal)
I'm sure there are others, but these are the ones I use most.
I was a Mac developer going all the way back to the very beginning. I spent most of my Mac development life with CodeWarrior. It was fast. It was efficient. It was straightforward.
Yes, for larger projects it lacked quite a bit of the things most developers expect or need, but even just using it just as an editor was good.
And then came Xcode...
I could spend the entire night listing problems with Xcode. I feel like my soul has been drained over the past two to three years of struggling with this nightmare of a development environment. I think the only reason there isn't a larger outcry from Mac developers is there simply is no real alternative outside of vi and makefiles.
Something went terribly wrong with the Xcode project at Apple. The IDE is so bad that I have come to naturally expect things to just not work or crash. Even on a quad-970 machine editing and basic UI functions are mindboglingly slow. Text editing is so slow in Xcode that I cannot believe it isn't some sort of malicious sabotage.
And even simple things like jumping to definitions or listing include files is just flat out broken when working with projects and libraries open at the same time.
There are just so many things where I keep telling myself that in any other IDE this particular task would be easy to do or just work automatically. I feel like Xcode is some sort of possessed program that is actively seeking to thwart my every move.
Even though I've been a foaming at the mouth Mac lunatic for years and years, Xcode has just about sapped all my desire to continue doing development on the platform.
I can't believe that the article didn't recommend Eclipse. Even Apple's Developer Connection recommends this wonderful program.
Of course, Eclipse is a good tool because it is multiplatform and highly extensible. I find it great for java and python (through pydev) work on my Mac and other boxen.
Navicula hydraulica plena anguilarum est. Omnes castelli tuus nostri sunt. Ed elli avea del cul fatto trombetta.
I agree and was puzzled the author had X11 down at no. 10 on his developers list. Once you have X11, try Fink or Darwin ports and installing KDE and gnome is as easy as with Debian.
Once you have spent around a day watching fink compile all the libraries and applications for you KDE runs superbly on a mac. You can either alloiw it to manage the desktop and run fulll screen or simply run a toolbar in the manner of the dock. I would then highly recommend Kate - the KDE advanced text editor which is excellent for Perl and Bluefish for XML and X/HTML, although some pprefer Quanta plus which also comes with tthe Fink KDE bundle.. The KConsole is a very good terminal application also.
While there are still a few cut and paste issues between X11 and native mac application overall the integration is excellent, you can use expose on X11 and native windows and most desktop manager applications allow you to separate them between desktops, plus you get access to all the excellent mac fonts.
As a Perl author I was disappointed in the mac at first. Now I have the combination of KDE, Gnome an native mac tools it has moved to be my preferred development platform. I would seriously recommend anyone with a mac and an interest in development to look at fink, to my mind it is more exciting than bootcamp will ever be.
ZigVersion is a Subversion GUI that kicks ass.
I've found a use for BBEdit's free TextWrangler -- it's a really smooth program, and because it has a command line interface, TextWrangler is easy to get it to do what you want it to do. TextWrangler has the best system for merging two files that I've found.
Although I've come to use emacs more and more for quick source modifications and when programs are only 1 source file, I still appreciate the use of a good IDE like xcode (although I do think that visual studio is still a bit better) for the simplicity in navigating a large project. On the other hand, emacs does far better than xcode or visual studio at automatically indenting code.
I've found that the OSX developer program Sampler (which comes free with the developer distribution) is also a great program useful for getting a quick feel for where the bottle necks in my program are. Sampler is really intuitive to use, and it provides a nice way of navigating the calling tree of your program allowing you to see how different functions are spending what fraction of compute time. The only thing about Sampler that bugs me is that if I save the data, I haven't figured out how to get the data in terms of percents (as opposed to sample counts) when I load it later.
well - MAMP (mamp.info) does give you everything in one package, with the newest versions (Apache 2 & PHP 5)...
and it really invites to screw around with the setup.
before MAMP i often hesistated to install experimental stuff, now i can just drag the one(!) folder to the trash and start with a fresh install.
things i did with MAMP which were hard to realize otherwise (sitting with the powerBook on the couch) include
and much more...
it really helps if you enjoy messing around with a server setup and want to learn how everything works without srewing up your Mac OS install
OK admittedly he/she did metion PHP specificially in the second quote, but they seem to equate "professional developer" with "chooses PHP"! Hah! I had to restart an application I was working on that went from web to client/server with a GUI because PHP just doesn't cut the mustard for anything other that a web guestbook. Even if I did stick with web delivery I was running into problems with PHP (don't get me started on that session crap - oh here's an idea, run your application as a separate process to the web server and keep application state in memory! Maybe theorectically possible with PHP but I've never seen it done.) Basically, it's a joke, and it so much so that it now annoys me to no end when deveopers use "professional" and "PHP" in the same sentence (without a "not" in there somewhere"). If I had've started with Python or Ruby for example, I'm sure I could've at least reused some of that code. Thanks for wasting years of my life and teaching me bad programming habits, PHP.
If you do consider yourself a "professional developer", and you're working on an application where you think PHP is the right tool then drop that crap like a ton of bricks and try some other language... Python I can vouch for, and I hear Ruby is great too, and they both have great web frameworks.
It's Free software and does what you need it to do. For those that don't care for vim or are just detrimentally used to Cocoa's default key bindings and can't adapt well to vim. (That would be me, by the way.)
http://smultron.sourceforge.net/
I can't believe no-one has mentioned Textmate. It's an excellent text editor for MacOS X and wonderful for doing any sort of programming work.
http://macromates.com/
If you want to see how easy it makes things, it's used in the Ruby on Rails screencasts.
http://www.rubyonrails.org/screencasts
What's wrong with vim? Grab an X server, install RXVT and voila, a decent terminal with a decent editor. No need for fancy OSX things.
Eclipse has its strong points, but some people (like me) just don't like it. I can't really say why i don't like it, i guess it just doesn't feel right to me. I do like NetBeans a lot though. NetBeans looks and behaves more like a real OS X application than Eclipse IMO.
And if you're new to Swing development, Matisse (the GUI designer in NetBeans) really helps a lot... it makes it easy to develop java GUI's in the same way that Visual Studio makes it easy to develop winforms GUI's.
If you're a java developer (or are interested in getting started with Java) on OS X, i highly recommend giving NetBeans a shot. It's free, open source, easy to use and powerful.
note: i have nothing to do with the NetBeans project, i just think it's a great free IDE that deserves as much attention as Eclipse.
The article refers to Parallels virtualization software as $49, but that's for the "Win&Lin" version. The Mac version is $79.
How about Java? You run it on Mac OS-X and it looks just like an OS-X app, complete with top menu bar. All this and you don't have to change the source from Windows. I don't know if there are subtle differences to "real" OS-X apps that Mac heads would see, but from my point of view it works well. And Eclipse works quite well on Mac too.
It's hard to describe the wonder of Quicksilver. Just try it.
I've recently started using a Macbook, after years on Windows and *nix. The one tool I can't seem to find is a nice visual file compare utility, like Beyond Compare on Windows. I believe Emacs has something similar, but I'm allergic to it. Does Vim? Is there something standalone?
Q http://www.kju-app.org/kju/
If you code Cocoa applications you're more or less forced to use XCode. You can of course use any text editor and interface builder, but XCode is the only one that is integrated with IB. The small size of the Mac market here and Apple being the 800lb gorilla in that space means that anyone with competing coding tools is at an automatic disadvantage, much like Metrowerks was with Code Warrior. This is a real pity because the lack of competition enables Apple to be very lax about XCode performance and quality.
If you do Java, you have Eclipse or IDEA, both of which are streets ahead of XCode for Java coding. XCode doesn't even compare here.
And if you do Profeesional PHP coding (yes, it does exist), you may as well spend the money on the Zend IDE, since there is no other PHP IDE on OSX that shows classes and offers code completion and debugging as Zend does.
You can of course use Textmate for RoR, since it seems it was engineered with that in mind mainly, but you can do just as well for any of the PHP, Ruby and Python (and Perl, for that matter) group with the respective Eclipse plugins.
I personally use Subethaedit for quick single file editing and Eclipse for anything else. Textmate and BBedit offer me nothing that Exclipse doesn't.
Finally, a good knowledge of vi/vim is a real plus since it's what is easiest to use when you need to edit files quickly in the terminal. Trying to futz around with a GUI editor when you're editing init.d scripts etc is a waste of time. Plus vi will be on any and every Unix type machine you will ever find.
If your code is GPL'd I highly recommend giving QT 4.0 try. The native qt hooks are remarkably native looking for mac os x. It obviously depends on what your application is, but coding in qt 4.0 gives you unix / mac portable code w/ no effort, particularly if you do not have any mac os dependent code (i.e. hardware/device calls etc). (We have not tried the windows QT so do not have a point of reference )
A few folks mentioned Java and NetBeans, but of course the whole J2EE suite runs on OSX.
I enjoy using JEdit. It does syntax highlighting and all the indention things programmers need. I usually find myself going back and forth between vi and JEdit, depending on what I'm doing.
Of course, you can use MySQL with Java these days too, using the connector. But I don't of a better tool than the commandline mysql tool, with which you can write queries and format them to make sure your code is working.
Well, I've been using XCode for some time now, and not had the problems you're describing. I run it on a next-to-last generation AlBook (1.67GHz G4 with 1GB of RAM), and at least for pure Java projects, its text editing is just fine, it jumps to methods and classes at perfectly reasonable speeds, and the only persistent problems I've had with it is an odd tendency to lose track of how far it should be indented in large files, and a lack of support for the Expression... dialog for debugging Java projects.
So...I dunno what you're doing wrong, or what I'm doing right, but I find XCode to be more than adequate to my needs, and your experience is not universal.
Dan Aris
Fun. Free. Online. RPG. BattleMaster.
For the right job RB is a great tool.
"I hate to advocate drugs, alcohol, violence or insanity but they've always worked for me" - HST
If you're developing for the Mac, or simply developing on the Mac, you'll eventually want to use some sort of source control. CVS comes on the machine by default, and you can get MacCVS, but lately I've been using Subversion and find it to be a great program, even if the gui tools are a little raw.
/ 24158 There are others, but they all have their various quirks that have kept me coming back to svnX.
My favorite right now on the Mac is svnX: http://www.versiontracker.com/dyn/moreinfo/macosx
If anyone knows of a better Subversion tool on the Mac (on Windows I use TortoiseSVN and it's great) I'd love to know what it is.
Check out the sample code for the OSXAdapter, which is an easy way to tie in OSX support in a cross platform way. They also provide AppleJavaExtensions stubs so you can compile for Apple specifics even on non-Apple platforms. All the code uses reflection to determine if the Apple extensions are there, so nothing special needs to be shipped oncce the byte code is built.
I use BC heavily for Windows development. Being able to create sessions with very detailed criteria and ignore lists and then connect to an FTP server to compare a local directory, and THEN be able to do detailed diff and merge on individual files, if necessary, is an amazingly powerful tool.
Its not that it does any one of these things really well, just that it does them all.
SubEthaEdit is invaluable for collaboration. I can't say how many times it has come in handy when I've wanted to help someone with code over the Internet or plan out code with someone. Not to mention taking notes with 5 other people in 'ole Computer Science lectures...
They did. FTFA:
N/T
If I'm doing Perl or shell script work, and want to produce apps, I go with Platypus -- combined with something like Pashua or CocoaDialog, you can piece together nice little apps in no time.
I've found that the OSX developer program Sampler (which comes free with the developer distribution) is also a great program useful for getting a quick feel for where the bottle necks in my program are. Sampler is really intuitive to use, and it provides a nice way of navigating the calling tree of your program allowing you to see how different functions are spending what fraction of compute time.
The only reason to be using Sampler instead of Shark is because you haven't found Shark yet. Shark is part of Apple's CHUD tools that you can download here. It is quite possibly the best profiler that you'll find anywhere on any platform. And best of all it's free.
I probably use Shark on average 2-3 times a day, every day. It has been instrumental in locating and fixing countless performance bottlenecks. Download it and give it a try, you won't regret it.
infested with jello like fishes no melotron wishes
FileMerge - free with Apple's Developer tools - is a good utility for merging files and folders.
Also, BBEdit/TextWrangler both have a good compare utility and TextWrangler is free.
My favorite though is CodeWarrior's compare utility. It is simple and easy to use but CodeWarrior is now dead. Plus, there would be no point in buying CW just for its compare utility. Still, it's probably the one I use the most.
infested with jello like fishes no melotron wishes
So, for Mac application developers, here's a better list:
- BBEdit - the best text editor, period.
- Interface Builder - the best GUI builder.
- Shark - if performance is important then there's no better tool.
- Xcode - well, there's really no other choice these days, and it's getting better.
- AppKiDo - for quick reference to the Cocoa APIs.
- Terminal - good enough for me.
- OmniGraffle - for application/class modeling and design.
There are many other important and useful applications, but these ones really are the core essentials for application development (at least for me). Anything I left out?infested with jello like fishes no melotron wishes
iTerm may have keyboard shortcuts for this (if it doesn't, that's a major deficiency), but I guarantee screen gets the job done better. I got hooked on the remote detach/attach feature of screen about a dozen years ago, and I absolutely can't do without it to this day. I constantly have a screen session running on my home machine with a dozen or more shells. Throughout any given day, I'll attach to it from wherever I may be - the laptop at home, the desktop at home, my office at work, the lab at work, a friend's house, etc. Everything is preserved just as it was last time I left it, so I can resume any one of many tasks anywhere, anytime.
If I need to see multiple windows at once (major development with multiple files, etc), just open up multiple terminal windows and have them all attach to the same screen session simultaneously. Works beautifully. Does iTerm do any of this better?
Say hello to zMac.
Takes the drudgery out of writing all of those getter/setter methods in Obj-C
The first thing that caught my eye on Quicksilver was its cleverness in identifying patters.
Say, I activate and type 'rdc', and it knows it is Remote Desktop Connection. Type 'vnc' and it finds chicken of the VNC. 'aulo' and it'll switch to the AUtomatic network LOcation.
It finds names the very same way our own brains do, by shortcuts, keywords, abbreviations.
It isn't a developer tool, though... And that'll give grandparent post some offtopicness. But integrate it with XCode, Eclipse, etcetera, (no plugins available at the moment, IIRC, though) and it may help you find that source file or image that you're looking for with blazing speed.
I absolute love KDiff3, which is originally a KDE application. (It works just fine on the Mac as well, though.) It's fast and I really like the way it shows the differece between files or folders. If there really is only one character difference on a line, it will indicate that there is indeed only one character difference instead of showing the usual full-line replacement that the other diff programs I've tried do. You can also compare three files/directories, hence the name KDiff3. Check it out!
The view was horrible and the smell was even worse; Julie severely regretted becoming a proctologist.
I was looking for Trolltech. Somehow I couldnt find it.
I think I've found a bug in my firefox's search function. Its late in the day.
Can someone find the Trolltech rank somewhere in there please?
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
Its a Mac classic... for native apps nothing beats RB. Fast, easy programming and if you need (only for the really hard stuff) you can allways trow objeive-c in the mix
http://episteme.arstechnica.com/eve/forums/a/tpc/f /8300945231/m/332004739731
Indispensable
I use viPlugin with Eclipse. I'm a happy camper.
There's a great sourceforge project that is an ant task that mimics JarBundler. The target takes a lot of parameters to get it just right, but pretty much every option to JarBunder.app is supported.
Me too, and it works pretty well although some of the missing features are a bit of a pain and keep me going back to the real vim. I'm using Eclipse at the moment because it is great for debugging but I also have a few xterms open too. If I need to do something that is quicker in real vi I just save the file in Eclipse, open it with vim, do what I need to do, save it again and then open it back up in Eclipse. Whatever works I guess :-)
"I have the attention span of a strobe lit goldfish, please get to the point quickly!"
I find CMake tremendously useful, as it lets me manage most of my configuration in a cross-platform manner. I can transparently take the project over to Windows to build with NMake or Visual Studio. I don't use the XCode support very much, as the Makefiles generated by CMake seem to work pretty well.