• Home
  • Events
  • About
  • dolphin.js – going multi-channel with OpenDolphin

    May 13th, 2013

    The OpenDolphin approach to client-server applications has many known benefits, here are just the most important ones:

    • clear separation of what to display (server) and how to display (client)
    • application logic on the server (efficiency and protection of investment)
    • full exploitation of the native clients capabilities (fidelity)
    • generic presentation models (independence of client and server)

    These benefits derive mainly from a client-server split at the presentation model layer.

    Read more about the architecture and concepts in the online documentation or have a look at the extensive set of sample applications:

    JavaFX as a modern Java UI toolkit is certainly a natural choice to go along with OpenDolphin on the Java client. But the clear separation of concerns (what and how to display) makes it easy to deploy any UI framework on the client. In the demos you’ll find examples of JavaFX and Swing clients that happily coexist with exactly the same server code.

    Since the costs to switch the client technology are fairly low with OpenDolphin, going web and mobile is the next logic step. Dolphin.js leverages exactly that potential.

    Dolphin.js is an OpenDolphin client implementation in JavaScript allowing you to connect your web application to an OpenDolphin server. It follows the same concept as the Java implementation, therefor most of your OpenDolphin knowledge is applicable to it.

    The usage of Dolphin.js is best introduced with an example. You’ll find the Dolphin.js jump start project in Canoo’s github account. A video of the jump start application can be found here.

    Dolphin.js uses require.js for modularization which is an AMD implementation. Dolphin.js integrates into your JavaScript project as follows (head section):

    <script type=”text/javascript” src=”../scripts/require.js”></script>
    <script type=”text/javascript” src=”../scripts/dolphin.min.js”></script>
    <script type=”text/javascript” src=”config.js”></script>

    It is important to list the require.js dependency first. In config.js you can define external dependencies to third party libraries. Your application runs as an AMD module (body section).

    Any dolphin.js app is structured as follows:

    require([
        ‘Dolphin’,
        ‘comm/ClientAttribute’
    ], function (Dolphin, ClientAttribute) {
        var url = window.location.protocol + ‘//’ + window.location.host + “/dolphinServer/tutorial/”;
        var dolphin = new Dolphin({ serverUrl: url, clearSession: true });
         // your app code here
     }

    ‘Dolphin’ is the core module and required for any app. Typically you want to create a presentation model with client attributes, therefor you need ‘comm/ClientAttribute’ as well. The Dolphin constructor takes the (Dolphin) server URL and optionally a flag if the browser session should be cleared upon reload. Once you have a Dolphin instance you are ready to create and bind your UI to the presentation model.

    The following snippet creates a presentation model with a ‘temperature’ client attribute and binds it to an HTML input field:

            var tempAttr = new ClientAttribute(“temperature”);
            var weatherMold = dolphin.getClientDolphin().presentationModel(
                “weatherMold”,
                “weather”,
                tempAttr
            );
            var tempInput = document.getElementById(“tempInput”);
            tempInput.addEventListener(“input”, function () {
                var value = tempInput.value;
                tempAttr.setValue(value);
            });
            tempAttr.on(“valueChange”, function(data) {
                tempInput.value = data.newValue;
            });

    The binding to the temperature attribute is stable and reflects any changes in the input field or model vice verse.
    Binding to individual HTML elements is the most basic integration which works with any JavaScript framework.

    Future version of dolphin.js will support direct integration in JS frameworks such as backbone.js and angular.js which provide model-view bindings out of the box.

    The code example shown is only the most basic usage of Dolphin.js. For a master-detail and a server push implementation have a look at the jump start project code. Dolphin.js is very lean (currently around 700 lines of code) so it’s straightforward to read through the source code. The jump start project also features a mobile (JavaScript) client.

    Our experience in porting the Dolphin from Java to JavaScript shows that specific ports to native mobile plattforms as iOS and Android are feasible and the next step.

    Dolphin.js demonstrates the inherent multi-channel capabilities of OpenDolphin. With such an approach you no longer have to bet on the next UI client technology, but rather are able to react quickly to changing UI demands at the least possible costs.

    Get in touch with us for more information on OpenDolphin and it’s multi-channel capabilities.


    Java in the Cloud (JUG CH Event)

    September 21st, 2012

    Sacha Labourey, founder and CEO of CloudBees talked at yesterdays Jug event. He started with a short overview between the differences of SaaS, IaaS (infrastructure as a service) & PaaS (Platform as a service). Then talked about the advantages of having the development process in the cloud (scalability, service, no shortcuts – later insourcing is not a problem, because the platform on the cloud enforces standards, pay only what you use, but scale when you need etc.)

    After the sales pitch he presented some PaaSterns, patterns they observed of the kind of applications hosted at CloudBees. He cleaned up with some myths (security), presented possible solutions for common problems, e.g. how to work with legacy apps. They also spot some trends on applications which are developed for the cloud: web apps with REST interface and multiple clients, fatter clients, a lot of mobile apps etc.

    No cloud discussion without the mandatory question where the data is hosted. We learned that CloudBees uses Amazon services and the data for european customers is in Ireland and for US customers in the US. CloudBees does not have a datacenter in Switzerland yet, mainly due to the lack of big customers.

    The most thought provoking part however was the forecast of Sacha, that in 2020 it will either be SaaS (if a solution exists) or PaaS (if the solution needs to be developed) – meaning a big shift from the way IT is operated today. That left us over the apero with the questions: What impact does it have on ISV, what on software factories and last but not least, what on each individual developer?

    (This Jug event as others has been sponsored by Canoo).


    Workshop – Enterprise Mobile Apps with Sencha Touch 2

    July 26th, 2012

    /ch/open/
    This years /ch/open workshop days will take place from September 4-6th.

    Canoo will hold a workshop about Enterprise Mobile App development with Sencha Touch 2. Come and participate!

    In the area of business applications web based, cross-plattform mobile apps make perfectly sense. Cost efficient multi-plattform development, flexible deployment, leveraging of existing knowledge are the top reasons why companies choose this approach.

    html5HTML5, modern JavaScript frameworks and CSS3 provide everything a mobile developer requires. In addition frameworks like PhoneGap (aka Apache Cordova) provide access to native functionality if needed.
    In order to efficiently develop demanding applications good framework and tool support is mandatory. The Widespread Sencha Touch 2 framework provides a robust basis for that.

    The workshop guides you through all the bits and pieces you need if you want to go beyond toy mobile applications and do real business. Modular architecture and testability are key in that area.

    Workshop topics

    • Sencha Touch 2 MVC architecture
    • REST-Services, Proxies and Stores
    • Handling relational data
    • Dependency injection
    • Testing
    • outlook into offline support, custom components and PhoneGap

    We are also planing to hold this workshop this autumn in Basel. Please leave a comment or contact us directly if you are interested.
    By the way, did you know Canoo is offering a wide range of mobile services? Have a look at www.canoo.com/services/mobile/


    Mobile apps with GWT

    May 16th, 2012

    For the development of business web applications GWT is a tool of choice.
    Since most business applications are based on a Java Stack, GWT empowers Java-Developers to write business ready, robust cross-browser applications in their favorite language.
    Certainly there are powerful JavaScript frameworks around to achieve such, but you need a lot of experience to tackle all the quirks and oddities the ambient browser language comes with.

    Now these days more and more businesses are seeking for mobile channels of their applications.
    Flexibilizing their businesses, supporting new business cases and increasing efficiency are the main reasons driving that process.
    When it comes down to the technical realization of these channels most companies are facing significant difficulties.

    Developing and maintaining native applications is normally not a choice. Costs are simply too high to acquire and maintain expertise on all different mobile plattforms.
    Cross-plattform technologies are seeking to solve this problem for most business cases. But what framework to choose?
    Web technology based applications are a common sense, best supported among all devices and most future-proof. Sencha Touch, JQuery Mobile and others are leading this area and good results can be achieved deploying them.

    But how great would it be if you could – with moderate effort – turn your existing web GWT app into a mobile app?

    A mobile app written mostly in Java, simply testable, with all the power of the GWT framework and last but not least supreme performance on the mobile device.

    Well, look no further: m-gwt.com is coming to rescue!

    mgwt is a ligthweight extension to GWT basically providing mobile widgets and mobile plattform integration.
    mgwt has been developed over the last 3 years and went open source in 2011. According to creator Daniel Kurka many commercial products have been developed using the framework.

    Canoo was lucky to have Daniel Kurka himself in for a workshop recently.

    Whats mgwt all about?

    There have been a few attempts to mobilize GWT in the past. They were all focusing on different aspects, like HTML5 storage. Non of them really succeeded.

    Now, mgwt has a few very important design goals which makes it a promising candidate to become THE standard mobile GWT extension:

    • integrates well with GWT MVP
    • keeps the DOM lean
    • leverages the powerful optimizing JavaScript cross-compiler
    • does as much as it can in CSS3 (hardware supported)
    • native support for touchevent the GWT Way
    • animations built in with GWT MVP
    • integrates well with PhoneGap

    Compared with JS based cross-plattform frameworks mgwt advances in:

    • generation of isolated mobile plattform permutations makes client-side if/else statements obsolete
    • different plattform interaction patterns can be supported (i.e. Android back button)
    • integrates naturely with PhoneGap
    • integrates smartphone, tablet and web app development!

    Curious?
    Check out the kitchen sink app and give it a try.

    Btw. Daniel Kurka can be contacted for consulting, workshops and advice @dankurka


    MobileTech 2012 – Final thoughts

    April 2nd, 2012


    At the end of last week I received a comment concerning my MobileTech blog posts, which cast doubt on my objectivity: The tone of my posts was almost exclusively positive and contained too little critical analysis of the conference’s content.
    Well guys, if the tone was positive it’s simply because it was a great conference; both from my perspective and from the perspective of the many other participants that I spoke to.
    So what makes for a great conference? Most importantly, of course, is that you come away feeling that you’ve learned useful stuff. And I learned a lot. For example:

    • I got a great introduction to the Android platform from the chaps at Open Knowledge.
    • I got an extraordinary sense that we’ve only just begun to see the potential of mobile technology. Case in point: Mind-blowing demos from Reality Jockey and Wahwah.fm, Andy Abgottspon and others.
    • The fact that UI design is even more critical in mobile than in traditional apps was made crystal clear to me. The necessary clues as to how to create successful UI designs were provided by Werner Jainek (design process) and Stephan Gillmeier (iOS APIs Core Animation, Core Graphics, Quarz Core)
    • Finally, Heiko Behrens reminded me of the growing power (and relative simplicity) of web technology and that it’s possible to exploit this power in the context of native apps. This is certainly something I’m going to pay more attention to in my future mobile project.

    With all the new information and valuable reminders, there was naturally a lot of brainstorming and networking going on at MobileTech 2012. Facilitating this were the more general aspects of the conference – accommodation, catering etc. – which were as smooth as silk in their execution. Kudos to Sebastian Meyen of Sands Media and his team as well as Holiday Inn München.

    So to return to the comment above: I stand firmly by my statement that this was a conference of exceptional quality. If anyone has a different take on it, please feel free to comment.


    css.php