Jun 24, 2009

Eclipse Galileo for Mac: Cocoa or Carbon?

Eclipse Galileo (3.5) is released today. Mac users downloading the new release will notice that, unlike previous releases, they have some interesting choices to make. They need to choose between "Mac OS X (Carbon)" and "Mac OS X (Cocoa)". There's also a third choice, which is currently not mainstream, the "Mac OS X (Cocoa) 64 bit". So, which version is right for you?

Answer: Download the 32-bit Cocoa implementation. Here's why.

Here's a brief and (over?) simplified background:

The Mac OS X provides a native API called Cocoa. It replaced the earlier implementation called Carbon. Carbon is being phased out and one of its' main limitations is that it is only 32 bit.

Java 6 for Mac OS X, introduced last year, is 64 bit only. This is, BTW, a real annoyance, since you must have a 64 bit capable CPU to run it, i.e. an Intel Core 2 Duo.

SWT is the GUI framework behind Eclipse. It is written in Java, but it is different from other Java GUI frameworks (like Swing or AWT) in the fact that it actually wraps the OS native UI widgets, providing native look and feel in each OS. This means SWT has a different implementation for each OS.

The current SWT implementation for OS X is based on Carbon. Thus, it cannot use Java 6 on OS X (at least not the Apple JDK).

Let's first clear the 64 bit issue. You can use the 64 bit Cocoa implementation. It requires Java 6, which is available on Leopard (OS X 10.5.x) only and requires an Intel Core 2 Duo processor (not Core Duo). If you bought a new Mac in the last 2 years, you are likely there. You can check your processor by selecting "About this Mac" from the Apple menu.

You will need to use it if you have an Eclipse plugin which requires Java 6 to run or if you are developing such a plugin or an RCP application (which means you are limiting your target audience). I am not familiar with any popular Eclipse plugin which specifically requires Java 6. You may also use it if you intend to break the 32-bit memory addressing limit with your Eclipse IDE (which is almost 4 GB).

In all other cases, there's no reason to use Java 6. From my initial tests it does not feel faster. Plus, it has limitations like the inability to run the SWT_AWT bridge (some plugins may use it). It uses more memory which is obvious since addresses take more space. You can, BTW, develop Java 6 applications with Eclipse running on Java 5.

My current recommendation is: don't bother. Use the plain 32-bit version. If you still want to test it yourself, the 64-bit version can be downloaded here.

Back to the main question: Cocoa or Carbon? First of all, they look the exactly same. Although Carbon is more mature and thoroughly tested, the new Cocoa implementation offers advantages and improvements. There are some obvious features like Sheet support, which is implemented in a few places like the "save as" dialog. However, it's the little things that make the big difference.

Here's just a few examples:

Improved behavior of the Zoom button (the green button in the title), finally.

Much better Spaces support.

Plays nice with the Dock when it is positioned on the left of the screen.

These are all minor issues, but they make your life much better. I'm sure you will appreciate the Cocoa Eclipse. I do.

Comments

Eclipse Galileo (3.5) is released today. Mac users downloading the new release will notice that, unlike previous releases, they have some interesting choices to make. They need to choose between "Mac OS X (Carbon)" and "Mac OS X (Cocoa)". There's also a third choice, which is currently not mainstream, the "Mac OS X (Cocoa) 64 bit". So, which version is right for you?

Answer: Download the 32-bit Cocoa implementation. Here's why.

Here's a brief and (over?) simplified background:

The Mac OS X provides a native API called Cocoa. It replaced the earlier implementation called Carbon. Carbon is being phased out and one of its' main limitations is that it is only 32 bit.

Java 6 for Mac OS X, introduced last year, is 64 bit only. This is, BTW, a real annoyance, since you must have a 64 bit capable CPU to run it, i.e. an Intel Core 2 Duo.

SWT is the GUI framework behind Eclipse. It is written in Java, but it is different from other Java GUI frameworks (like Swing or AWT) in the fact that it actually wraps the OS native UI widgets, providing native look and feel in each OS. This means SWT has a different implementation for each OS.

The current SWT implementation for OS X is based on Carbon. Thus, it cannot use Java 6 on OS X (at least not the Apple JDK).

Let's first clear the 64 bit issue. You can use the 64 bit Cocoa implementation. It requires Java 6, which is available on Leopard (OS X 10.5.x) only and requires an Intel Core 2 Duo processor (not Core Duo). If you bought a new Mac in the last 2 years, you are likely there. You can check your processor by selecting "About this Mac" from the Apple menu.

You will need to use it if you have an Eclipse plugin which requires Java 6 to run or if you are developing such a plugin or an RCP application (which means you are limiting your target audience). I am not familiar with any popular Eclipse plugin which specifically requires Java 6. You may also use it if you intend to break the 32-bit memory addressing limit with your Eclipse IDE (which is almost 4 GB).

In all other cases, there's no reason to use Java 6. From my initial tests it does not feel faster. Plus, it has limitations like the inability to run the SWT_AWT bridge (some plugins may use it). It uses more memory which is obvious since addresses take more space. You can, BTW, develop Java 6 applications with Eclipse running on Java 5.

My current recommendation is: don't bother. Use the plain 32-bit version. If you still want to test it yourself, the 64-bit version can be downloaded here.

Back to the main question: Cocoa or Carbon? First of all, they look the exactly same. Although Carbon is more mature and thoroughly tested, the new Cocoa implementation offers advantages and improvements. There are some obvious features like Sheet support, which is implemented in a few places like the "save as" dialog. However, it's the little things that make the big difference.

Here's just a few examples:

Improved behavior of the Zoom button (the green button in the title), finally.

Much better Spaces support.

Plays nice with the Dock when it is positioned on the left of the screen.

These are all minor issues, but they make your life much better. I'm sure you will appreciate the Cocoa Eclipse. I do.