Clojure
Rich Hickey discusses Clojure features and syntax, example code, functional programming, concurrency semantics, transactions, software transactional memory, agents, implementation and pain points.
- Java,
Tracking change and innovation in the enterprise software development community
Posted by Jon Rose on Sep 07, 2008 02:52 PM
In this post, InfoQ discusses the Appcelerator platform with Matt Quinlan, Vice President of Community Development at Appcelerator. Quinlan highlights the strengths of Appcelerator and some of its common uses.Appcelerator is a fully-integrated RIA + SOA platform.After understanding the "What," InfoQ asked Quinlan, why software professionals should consider using Appcelerator:
Appcelerator combines the usability benefits of Web 2.0-style, Rich Internet Applications (RIAs) with the reusability and flexibility of Service Oriented Architecture (SOA). This combination results in a "client/server for the web" development style...
Why? To see that it is possible for mere mortals to build rich internet applications (RIAs) based on Ajax, not just development teams composed of PhD carrying JavaScript ninjas like Google!InfoQ inquired about the Appcelerator expression language:
The Web Expression Language is really just an expansion of the JavaScript event model used in traditional HTML (with slightly altered syntax). On some condition do some action. For example, you might have onClick="some javascript" as an attribute on some HTML element. With Appcelerator's web expression language you would have on="click then script[some javascript]". However, the list of conditions and actions available to the web developer with Appcelerator is much larger.InfoQ asked about deploying Appcelerator applications:
Conditions:Actions:
- DOM events (click, focus, blur, change, mouse events)
- key events (up, down, press)
- other (history, drag/drop, selected, resize, iPhone orient, sortXYZ)
- subscribe to custom message
This allows a developer to address event handling, DOM manipulation, and Ajax (via the custom messages) all in the same consistent manner that is extremely similar to how they address events (e.g. onClick) today.
- Scriptaculous effects (show/hide, fade, move, scrollto, drop, grow, highlight, morph, ...)
- set element value (static, dynamic, bind)
- set CSS class or attribute
- execute custom JavaScript
- publish custom message
To understand the messaging that enables our UI decoupling and Ajax see first page of http://doc.appcelerator.org. Think observer pattern & publish/subscribe rather than API calls.
Appcelerator-based applications can run out-of-box in any JavaScript enabled web-browser (no plugins required). Simply include the appcelerator.js file in your HTML. We like to say, "We write lots of complex JavaScript so you don't have to". We support service-bindings for all six major web development platforms (Java/J2EE, .Net, Ruby, PHP, Python, Perl).Then, InfoQ followed-up, asking Quinlan if an SOA backend is required:
No, our client-side technology (web expressions, widgets, client-only messaging) can be used with traditional non-SOA-enabled web architectures. This is important to allow developers to adopt technology at their own pace (we call this the "crawl" stage). However, we strongly encourage developers consider building their web applications as service oriented UIs (SOUIs) that are essentially true web clients (built of HTML, CSS, & minimal JavaScript) that interact with the server only through asynchronous service calls (we refer to this as the "walk" stage). You don't have to generate your UI from server-side scripts anymore (see http://www.appcelerant.com/lipstick-on-cgi.html).Quinlan then shared about Appcelerator Google App Engine support:
We provide a handy little swiss-army knife tool called "app" (similar to Ruby's GEM command) which allows us to many things including deploying your Appcelerator app directly to the Google App Engine cloud. You can also publish assets to the Amazon S3 cloud as well from the command.InfoQ asked Quinlan what else InfoQ readers need to know about Appcelerator:
http://www.appcelerant.com/running-appcelerator-on-the-google-app-engine.html
The publish/subscribe messaging paradigm is EXTREMELY powerful and enables clean decoupling of user-interface elements from each other, and from the serverside. This architecture makes Appcelerator-based applications well-suited for offline (queue the messages, then flush), for testing (stop imitating clicks and just record messages... hint: they work cross-browser!), for prototyping (build fully functional prototypes with zero server code by mocking the server-side service in HTML), and for so many other concerns of web developers.Shortly after InfoQ.com interviewed Quinlan, Appcelerator announced a license change from GPL to the Apache2 license. Appcelerator CEO Jeff Haynie anounced the change in his post "Appcelerator announces licensing changes; bye-bye GPL."
We've talked and listened to the community a lot in the past 6 months to understand how people want to use Appcelerator, how they are presently using Appcelerator and what types of things they would like to do in the future. We've clearly heard a very resounding theme: GPL is not the right license from a community perspective because of the implications that it brings to redistribution, especially as it relates to building web applications and how they are incorporated and downloaded by a web server. While we initially considered attempting to clarify our position on the GPL as it relates to these special legal concerns - I felt like we would essentially dilute the intent of the GPL license and that would defeat it's purpose. This was a clear indication that our license didn't match our business and technical goals.Learn more about Appcelerator at: http://www.appcelerator.com/
Creating Rich Internet Applications with the Adobe Technology Platform
The concept and architecture are exactly what I as a developer/architect am looking for! Cross platform, scalable, full stack, comprehensible! Could this be too good to be true? Please give us at least one good comprehensive GUI library we can work with. Not a lib based on Javascript objects from different projects.
Shimon Amit
Glad you like it Shimon!
I should mention that since this interview was completed we have released a new version of the Appcelerator Platform which includes brand new layout, design, and theme features intended to simplify the creative effort required to make a web applciation actually look nice (rounded corners, gradients, grids, control-level themes, etc.) These new features are currently in alpha, so they will be refined over the next several months as we collect feedback from the community.
Rich Hickey discusses Clojure features and syntax, example code, functional programming, concurrency semantics, transactions, software transactional memory, agents, implementation and pain points.
We introduce the concept of Composite Oriented Programming, and show how it avoids the issues with OOP and reignites the hope of being able to compose domain models with reusable pieces.
Dan Farino talks about the system architecture and the challenges faced when building a very large online community. Dan explains how a .NET product scales on hundreds of servers.
Alan Shalloway, CEO and founder of Net Objectives, presents the Lean software development principles and practices and how they can benefit to Agile practitioners.
Bernd Mathiske discusses Maxine VM, Java compatibility, swapping major VM components, research areas, Object handling, code examples, optimizing compiler, snippets, bytecode generation, JNI and JIT.
Joe Armstrong speaks on various aspects of the Erlang language, presenting its roots, how it compares with other languages and why it has become popular these days.
The java double-check singleton pattern is not thread safe and can’t be fixed. In this article, Dr. Alexey Yakubovich provides an implementation of the Singleton pattern that he claims is thread-safe.
Diana and Jim talk about patterns observed in CTOs' activity. CTOs emerge as real people caring for other people in their organization, and are put under a lot of pressure and constraints.
2 comments
Reply