Hi, I’m Chen and I’m the lead developer for AutoCAD WS for the Mac. In the following post I’m going to talk about how we took our mobile application and turned it into the Mac app that you can get now on the Mac App Store.
I’ll start with a brief introduction to AutoCAD WS. In September 2010, AutoCAD WS was released for both the web (Adobe Flash) and iOS. In April 2011 we released our Android client. The Android and iOS apps share a lot of code which is written in C++. Some of the code that is in C++ includes the streaming and rendering algorithms.
Ben Raziel, Chen Harel, Erik Sapir (& Nili)
When we developed our iOS app in 2010, we already made the code as portable as we could because we knew that we weren’t going to stay in just one platform. The rest of the code (mainly UI and platform services) in the iOS was written in Objective-C on top of the Cocoa-Touch framework.
After a while we started working on our Android client. We used the Native Development Kit that enables Android apps to run C++ code. We had to write the services and UI in Java this time. Moreover we had to build a whole new bridge layer (JNI) in order to make the two components talk to each other.
Once I was assigned to lead the AutoCAD WS for Mac development, the first thing I did was to check all the code I could reuse from the mobile app. Code that was written in C++ was shareable between all three platforms, and code in Objective-C that wasn’t iOS exclusive was shared with the Mac.
If the Android and iOS apps share 85 percent code in version 1.3, the Mac app shares around 95 percent code with the iOS version. That number even takes into account several new features available only for the Mac app such as plotting capabilities and control over Snap and Ortho.
The Mac app is built using the Cocoa framework as opposed to the Cocoa-Touch framework the iOS uses. Some of the technology issues we faced with switching from Cocoa-Touch to Cocoa were multiple windows rendering, rendering on large screens and using a mouse as a pointing device. Having a mouse (or Trackpad) meant that our iOS tools weren’t robust enough.
We had to develop a new set of tools and choose the right tool for the right platform. The job was placed in the hands of Ben Raziel a member of our team and he did a great job!
I would also like to mention another member of the development team, Erik Sapir. Erik brought great ideas for implementing better product performance in terms of rendering, zooming and panning.
I have tried not to get too technical in this post. I would love to read comments here or on our Facebook page or Twitter feed regarding future posts you would be interested in reading from me or the other developers.