As part of Adobe Creative Suite Developer Summit, May 3rd – 7th, 2010, there was a session entitled Integrating Creative Suite with Other Systems. The main intent of the session was to describe how the Flex/AIR platform can be used in conjunction with Adobe Creative Suite Extension Builder and Creative Suite ActionScript wrapper libraries, to make integrating Creative Suite CS5 with other systems- such as distributed, dynamic, enterprise data- relatively straightforward.
We gave a quick demo as part of the developer summit keynote, showing a CS5 extension called BasicAmfConnector that was written in two or three days. This shows how easy it can be to keep multiple desktop clients in sync and also how easy it can be to produce Creative Suite CS5 publications based on remote, dynamic data with LiveCycle Data Services on the backend. A re-recording of the demo is shown below.
This post introduces the Adobe Creative Suite SDK and Adobe Creative Suite Extension Builder- an integrated developer environment based on Eclipse/Flash Builder- that revolutionizes integrating with and extending Adobe Creative Suite CS5 applications.
This is based on a presentation at a recent Adobe Creative Suite Developer Summit in Seattle, 4th-7th May, 2010. You can review the presentation, Introduction to Creative Suite SDK, at http://my.adobe.acrobat.com/p71668025/.
Learn more about Adobe Creative Suite SDK and Adobe Creative Suite Extension Builder by visiting http://www.adobe.com/devnet/creativesuite/sdk/index.html, from where you can download Creative Suite SDK. You can obtain Extension Builder through some of the partner programs, for instance:
Using Creative Suite Extension Builder, have found that we can build extensions to run across several Creative Suite applications in days, which might have taken months to program when using the C++ plug-in APIs. You can find documentation about Extension Builder at http://cssdk.host.adobe.com/sdk/1.0/docs/WebHelp/suitesdk.htm
Creative Suite Extension Builder is an integrated development environment for creating CS5 extensions; these extensions are mini-AIR applications, which can execute in several Creative Suite applications use the AIR 2.0 API. Creative Suite Extension Builder makes it as easy to write extensions that run in a Creative Suite CS5 application, as it is- using Adobe Flash Builder- to write a Flex application to run in the browser or an AIR application to run on the desktop.
Many teams within Adobe have contributed to the Adobe Creative Suite Extension Builder and Creative Suite SDK efforts; core technology pieces have come from the Adobe AIR, Adobe Flash and Adobe Core Technology teams, as well as Suite Technology- it really has been a distributed, collaborative effort. Our team has been most closely involved in defining what the developer experience should be and delivering the tooling that we have called Extension Builder, which is a commercial product. We have also produced the Creative Suite SDK, which is a set of libraries, documentation and resources you can use to write a CS5 extension, although without Extension Builder, it is rather more painful and involved. Creative Suite SDK is to Extension Builder as Flex SDK is to Flash Builder.
Whilst you can do incredible things with C++ API to some of the products in Creative Suite, and C++ typically offers the deepest integration with the Creative Suite products, you may find points of pain when you develop for multiple applications within Creative Suite prior to CS5. For instance, you will find that you have to use different IDEs on Mac and Windows- Microsoft Visual Studio on one, XCode on the other. You will find that you need to use different user interface frameworks across the Creative Suite applications- sometimes without GUI editors to design your UI. Also there can be detailed differences in the plugin architecture across applications that make it challenging to share code between plugins targeting different applications. It can also take a fair amount of time to implement features such as say integration of one Adobe product with a backend system, such as a relational database; for instance, to connect Adobe InDesign up to an external system via the C++ API to InDesign can take weeks or months to implement.
Another missing piece here- both in the C++ layer and scripting layers- is a set of cross-platform, highly capable APIs to integrate with other systems, perhaps over a network- say, make HTTP requests to a cloud-based service, or call a web-service via SOAP, or interact with an enterprise backend system.
When you’re building Flex apps to run in the browser or AIR applications to run in the desktop, because you can use the rich set of components in the Flex framework to build your user interface and the splendid user interface / GUI editor in Flash Builder’s Design view to create, wire up and refine your user interface- also you can customize its look and feel to an amazing extent, especially if you work with competent designers using Adobe Flash Catalyst, and can translate their intent into a richly skinned user interface.
So we thought, if we could bring some of the Flex/Flash/AIR developer ecosystem goodness to developing extensions for Creative Suite, we could eliminate some of the points of pain- fragmentation of the UI frameworks or lack of a capable GUI editor for most Creative Suite applications, say.
The other major benefit to us developers of the Flex/Flash/AIR approach is that all of a sudden, if you’re writing a Flex/AIR extension for CS5, it becomes almost trivial to integrate Creative Suite apps with other systems- the Flex messaging APIs make it easy to integrate with web services over SOAP or HTTP, or communicate over AMF with Adobe systems like Live Cycle or my personal favourite, Live Cycle Data Services, Adobe Blaze DS (Community edition of LCDS). Adobe LiveCycle in turn comes with a fabulous range of enterprise connectors, and makes it relatively easy to integrate
Another major strategic objective for CS5 and this Flash/AIR extensibility model is to move away from siloed, monolithic desktop applications that have common branding but not much else in common, to desktop applications that are tied in with backend services in compelling ways, which deliver real value to Creative Professionals and other users of Adobe software. Rather than desktop software, you’ll find in CS5 that there is real progress to the software-and-services vision, with extensions like CS5 Comment and Review and the offerings in CS5 Live such as Browser Lab already bringing real value to creative professionals.
In addition to C++ and traditional scripting development, with Adobe Creative Suite CS5, the Creative Suite ActionScript Wrapper (CSAW) libraries and Extension Builder, you can now use the Flex/Flash/AIR platform to integrate with and extend Creative Suite CS5. Creative Suite CS5 applications have an embedded AIR 2.0 runtime, with a component that loads CS5 (Creative Suite eXtensible Services or CSXS) extensions, which are like mini-AIR applications. Extension Builder makes it quick and easy to develop, deploy, debug, package and publish these CS5 (CSXS) extensions.
One key point to note is that C++ extensibility is not going away- however, we do want to complement the traditional extensibility of the applications with extensibility based on Flex/Flash/AIR. So we wanted to enable you to develop hybrid solutions, where part of your logic could be written in C++ and perhaps user interface components and other pieces in Flex/AIR. You can mix and match environments to develop most efficiently; for example, you may want to write user interface in Flex/ActionScript and call through to C++ code from your ActionScript, and there are different options you can take.
To implement the objectives, we made a conscious decision to invest more heavily in developer tools, focusing on the overall developer experience, and of course building on the Flash Builder/ Eclipse platform. Eclipse itself has well-defined extension points and makes it relatively easy to contribute new developer tools, and we have found that it is possible to extend the Flash Builder environment and make it as easy to write extensions for Creative Suite apps, as it is to write Flex/Flash apps to run in the browser or write AIR apps to run on the desktop.
This new emphasis on Flex/Flash/AIR based extensions is part of a long-term approach to enable developers to extend Creative Suite more easily, and make it much easier and quicker to integrate Creative Suite with a range of other systems. This blog will let you access several demos, which highlight exactly how quick and easy it can be to write code that runs in several Creative Suite applications, and exactly how easy Creative Suite Extension Builder makes it to develop, debug and deploy extensions across multiple Creative Suite applications.
Software and Services
Adobe Creative Suite Extension Builder targets professional Creative Suite developers looking to minimise their development costs and reduce time-to-market for their extensions, while delivering maximum functionality to their customers.
Built on top of Adobe Flash Builder and Eclipse, Adobe Creative Suite Extension Builder lets you rapidly develop, debug and deploy extensions in multiple Creative Suite applications. Adobe Creative Suite Extension Builder enables seamless integration with Creative Suite CS5 applications and other Adobe technologies; for instance, for manipulating XMP metadata, modelling customer workflows and automating business processes with Adobe LiveCycle, integrating with enterprise data through LiveCycle Data Services. Adobe LiveCycle also has a wide range of connectors to enterprise systems and makes it easy to integrate enterprise backends.
When you develop a Creative Suite extension (based on the AIR/Flex platform), your code can run in multiple Adobe Creative Suite desktop applications, so that you can integrate your own services with the Creative Suite and/or extend Creative Suite applications in novel and innovative ways. To do this without developing a CS5 extension, you would need to master a range of quite different plug-in APIs, or else write code that would execute only within hosts that provide a scripting interface and even then find that you need slightly different scripting languages in different products or have less than ideal debugging support.
Adobe Creative Suite Extension Builder allows developers to transcend these limitations, by allowing you to develop, debug and deploy a single plug-in that can execute in multiple Adobe Creative Suite applications, using a single programming language (ActionScript) throughout, using the powerful Flash debugger and design view built into Adobe Flash Builder.
CS5 extensions run in an embedded AIR 2.0 runtime, allowing you to make use of AIR APIs and leverage the Flex ecosystem. The development environment also provides Creative Suite ActionScript Wrapper (CSAW) libraries, which provide efficient access to the Document Object Model (DOM) of CS5 applications such as Adobe InDesign, Adobe Illustrator and Adobe Photoshop.
Using Adobe Creative Suite Extension Builder, integrating Creative Suite with other systems becomes a matter of days or hours; hitherto, it would have taken considerable effort to connect products in Creative Suite CS5 to enterprise-class backends, web services, and other dynamic, remote datasources. It also becomes easy to build mash-ups between remote systems, capitalizing on the elegance and efficiency of the Flex API, tight integration with Creative Suite CS5 through Creative Suite ActionScript wrapper (CSAW) libraries and other Flex libraries provided in the tooling.
Adobe Creative Suite SDK consists of a set of ActionScript libraries, documentation and other resources that make it possible to build CS5 extensions, which can be loaded in multiple Creative Suite applications. Developers can include these ActionScript libraries in their projects and create cross-application extensions, which leverage the Flex platform and the AIR 2.0 API, as well as efficiently access the document object model (DOM) of Creative Suite applications through an ActionScript API, using Creative Suite ActionScript (CSAW) wrapper libraries.