I'm mostly a Java developer and have been developing on Linux for the past 5 years. I'm pretty happy with Linux but time to time I need to run proprietary software that is not supported on Linux so I've decided to give Mac a try. I was wondering if anyone has any advice like how do you organize your development environment.
For what it's worth, many of the applications running on GNU/Linux are also available for the Mac. I use Eclipse and Git routinely on a Mac. Since I'm still on OS X 10.5, the first thing I did was to set my default JRE version to 1.6 (Mac bundles 1.4, 1.5 and 1.6), since the default setting is 1.5 (not sure if that's still the case with Snow Leopard).
I used Windows and Linux in the past for developing web applications.
I decided to switch to Mac two years ago and that was my best decision, I'm fully satisfied with the hardware and even more satisfied with the operating system.
I'm using Eclipse for developing Java and of course MacVim for any other. It's a good idea to install MacPorts with which you can easily install the missing utilities and libraries, which is not a lot, because MacOS is shipped with tons of unix (FreeBSD) stuff.
I am a Java developer, developing web applications for e-commerce and publishing, and have been exclusively using a Mac for many years.
Being Unix-based (a form of Free BSD, to be precise), MacOS has everything you would already be familiar with for Java development on other Unix-like platforms.
It has bash and all the command line Unix tools. It has subversion support built in, and Apache installed by default. Apple builds and distributes a MacOS-specific full JRE and JDK stack. You can download and install everything else you need on top of that.
I personally use Eclipse, JBoss and Tomcat, ANT and Maven, and MySQL - with various plugins and third party libraries, and have had no issues.
The biggest advantages, however, to using a Mac for development are
you can run the "big two" - Microsoft Office and Adobe Photoshop. I am not sure what your feelings are about this, but sometimes it is important to use the actual apps rather than behave-alikes so you get full fidelity and compatibility with what everyone else in your organisation may be using.
there are so many beautifully designed and well thought out Mac-native apps and utilities that help boost your productivity. (after all, programming is only one part of my professional day)
The only negative thing I can think of is that many "enterprise" products that are part of a Java application developer's stack, often have a native component even though most of the product is Java. Often, the native component only runs on Linux and Windows. However, the way around this is to run virtual machines. I often run non Mac-native core components in a Linux VM using VMWare Fusion.
Also, Java is not a first-class citizen on the Mac. When Apple first came out with Xcode and Cocoa, they started with supporting Objective-C and Java as equal-footing languages, but over time they removed or lessened support for Java. To me, this is a bit disappointing, but is actually no different than Windows or Linux (you can't write first-class native applications on either using the Java language). It's just that I'm too old and too set in my ways to have to Objective-C!
Snow Leopard has a Java 6 installed by default.
After that, you can use any Java tool you are used to, like Eclipse and NetBeans, which I both use without any issue.
You then have access to all other common dev tools like Git, SVN, etc...
As of today, I didn't have any issue with a tool I was not able to install on my MBP for Java development.
The only risk is the will to shift to Objective-C for native application development ;-)
I personally use Eclipse + Android SDK (and the corresponding Android Plug-in). Although I really don't like Java that much (I believe .NET has a slightly better framework and C#'s magic is more clear than Java), the environment works OK most of the time.
Eclipse and more specifically the Android tools are literally vomitive when compared to Xcode. The Android simulator could be easily confused by a April Fool's joke and it's slower than Windows Vista on a newly purchased laptop :) Sometimes you have to kill the processes running in the background because the Simulator will crash upon startup :s
Eclipse itself is "ok" I guess, tho' aesthetically speaking it looks very dated and some of the commands are clunky. In some areas it has better "little things" than Xcode (especially 4 that lacks some things). Yes, it supports a lot of things through plug-ins, but some do not work or cause the whole eclipse to go crazy.
But other than that, which has nothing to do with Mac at all and is more related to the buggy Android plug-in, the Macintosh environment is very nice if you get used to it. Tools like Launchbar or Alfred (or even QuickSilver if you can live with the sometimes buggy state) will open a new world for you.
The nice Versions (svn) or GitTower (git) coupled with Kaleidoscope for diff make you think how much time to these developers have put into the attention to detail part of developing software; at the same time, it makes you wonder, what other pieces of software are there waiting to make you feel right at home.
I developed professional webapps for years on a mac without any problems. I worked with Java 5 and 6, Eclipse, Ant, Tomcat and Subversion. Also PostgreSQL, Idea, Git, Maven, Firefox, nice Open Source text editors like Smultron and many more tools are available, not forget the Terminal to run shell scripts (drag & drop files from the Finder directly to the Terminal to get the absolute path pasted in). All you need in a well integrated OS ;-)
The only little problem is the case insensitive filesystem, with may result in problems when renaming files with a version control system - but that is the same under Windows.