What is Application Markup Language?
Application Markup Language, or AML, is a simple XML-based language that allows you to easily build a clean, functional, native application for your mobile device. The AML library implementation is open-source, and doesn’t require any imports from your package to work. AML doesn’t require you to know the details of how the mobile device builds its views. It doesn’t depend on some extra plugin installed on your device, and it doesn’t run your app code through another service.
AML uses markup from files statically bundled with your application code or dynamically pulled from a web service for both the data and the application design and behavior, allowing rapid design changes and the ability to use the mobile device as a thin client while still using the native UI. I overwhelmingly prefer the way the Gmail app works compared to the mobile web version of Gmail. I’m hoping that in the same way, AML will bridge the gap between the allure of native implementation and the ease of simply building a mobile version of a website.
Currently, AML is only partially implemented on the Android platform, but I plan to port it to the iPhone as well as Windows 7 Phone as soon as possible. Yes, this is an ambitious goal.
AML is still definitely in its infancy, so any recommendations, comments, or criticism are welcome! Just use the Feedback form. You can also subscribe to RSS news updates or follow @amlcode on twitter to stay informed of any progress.
What is it good for?
AML is not the best solution for every kind of application. It will probably never be good for visually stunning games. However, it is perfect for data-driven mobile implementations of web applications. If you need a mobile version of your product, but you want a real native implementation and not just a mobile website, AML could be the answer.
- AML builds each app view dynamically straight from the markup. On Android, this means there is no more need for
/res/layoutfiles. It also means that your code can be almost entirely independent of the target platform.
- AML builds views on-the-fly as they are needed in your app. It can parse the markup from any string that is valid AML. This means you can request a view, for example, from a web service based on login credentials, and show a view that relies entirely on web application logic—not anything built into your app.
- AML will enable your application to evolve at the same speed as your web application. Since it can cache and parse views that are provided remotely by your main web app, you can very easily build new AML-based features right into that code and just let the AML library in your mobile app work with the new information.
- Even if you want a regular, mobile-only app, AML is much simpler and cleaner than the equivalent native code required. It isn’t possible to do absolutely everything with AML that you can do natively, but it is quite likely that it can do what you need it do. It’s fast, clean, and easy.
Check out the Examples page for a few snippets (or amlets, as I call them) and screenshots.