IT-eye - JDeveloper 11 is available for download…

Andrej Koelewijn | Oct 7, 2008 05:30 -0600

But due to javascript errors i can’t download it. Not sure what is causing this, maybe some javascript files that don’t get through the firewall? Or maybe some simple javascript coding errors. Is it my browser, is it the page? Try it here: JDeveloper 11g download.

JDeveloper download javascript errors


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Oracle, JDeveloper

IT-eye - Web 2.0 redefined

Andrej Koelewijn | Oct 2, 2008 05:50 -0600

This week Tim O’Reilly wrote a post called Why Dell.com (was) More Enterprise 2.0 Than Dell IdeaStorm, in which he states his current definition of web 2.0:

I define Web 2.0 as the design of systems that harness network effects to get better the more people use them, or more colloquially, as “harnessing collective intelligence.”

This is exactly the point i made in my Web 2.0 Enterprise 2.0 presentation The real meaning of web 2.0 for your business. The internet allows companies to take advantage of all the knowledge in the world, and businesses can improve their level of service by using this knowledge.

The example i used was amazon.com. By using their customers, and the collective intelligence of their customers, amazon.com has created a store that’s better than real-world stores, because they really help their customers pick the right product. No longer is an internet store better because it’s always open, and it doesn’t require you to travel. Now it’s also better because customers are better informed to choose the right product.

If i am in a real-world store, i miss amazon.com because i need the information that’s only available on amazon.com. And now with the mobile web becoming mature, amazon.com is able to compete with physical stores right inside these stores.

Your customers, and the knowledge of your customers, become an essential part of the level of service you can provide as a company. This is the profound impact of the internet on businesses.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Internet, web2.0

IT-eye - jQuery also to be added to Oracle Apex

Andrej Koelewijn | Sep 30, 2008 02:50 -0600

Just learned from a comment by Gary to my previous post JQuery becoming essential knowledge for web developers that jQuery is also going to be used in Oracle Apex to add AJAX functionality. Marc Lancaster has a bit more info in his blog: Oracle OpenWorld - done and dusted. Good new for Apex users. I wonder how easy it is to create REST/JSON services using Apex/plsql.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Oracle, Internet, XHTML, CSS, Ajax, RIA, SOA solutions

IT-eye - JQuery becoming essential knowledge for web developers

Andrej Koelewijn | Sep 29, 2008 02:30 -0600

Recently i’ve blogged quite a bit about jQuery (Jquery howto: an accordion menu component, Creating charts using jQuery flot and some Grails, Using jQuery autocomplete with Grails and json). To say that i’m impressed is an understatement. It has completely changed my mind about the need for browser plugin technologies like Flex, Silverlight and JavaFX, although browser support for multimedia applications still has some catching up to do. jQuery makes AJAX pretty easy, Javascript extremely powerful, hides a lot of the browser differences, and has a large number of components.

JQuery was already used by a large number of websites and companies, but now Microsoft has announced that it’s going to include jQuery in Visual Studio. (Scott Hanselman has an example using jQuery with ASP.NET) Also, Nokia is including jQuery in all phones that use their WebKit based Web run-time. Here’s John Resigs blog entry about these announcements: jQuery, Microsoft, and Nokia. Also a bit more info on Ajaxian

Seems like jQuery is becoming essential knowledge for web developers.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Internet, Ajax, RIA

IT-eye - Client Server 2.0 enables disconnected applications

Andrej Koelewijn | Sep 24, 2008 08:50 -0600

Last year when Google released Gears with support for offline caching of web resources i doubted it’s usefulness. Why would i want to cache something that’s dynamically generated on the server? The file would probably be out of date by the time it was needed. However, this all changes in the Client Server 2.0 architecture.

When all User Interface files you download from the server are static, there’s no problem caching them offline. They will be up to date when you need them in the future, because they are static. All the dynamic parts are handled by the javascript code. if you combine this with a small offline set of data, stored in a database in the browser, suddenly you have a useful disconnected application model.

Ofcourse, this is not a new idea. Gmail and Google Reader have been offering this for some time already. But like many people, i had a hard time seeing that serverside generated user interfaces (html) aren’t really needed anymore. At all. No more jsp or jsf. (Unless you need search-engine indexable content). But when you let go of the idea that you need to dynamically generate anything at all on an application server, suddenly offline caching becomes a very interesting concept.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Internet, XHTML, CSS, Web services, Ajax, RIA, SOA solutions, Technology

IT-eye - What is Client Server 2.0?

Andrej Koelewijn | Sep 24, 2008 04:50 -0600

Client Server 2.0 is the next logical step that started with AJAX and RIA. It is Client Server but based on open standards: html, javascript, css and services. The client is completely responsible for creating the user interface. All dynamic parts are generated using javascript in the browser. Applications servers will serve static html, javascript, and css. But more importantly, they will host the services used by the javascript clients. So the main role of application servers in this model is to act as SOA containers.

The following image illustrates the position of Client Server 2.0 with respect to other application architectures. The eighties saw the move from terminal applications to client server applications, enabling users to take advantage of the increased power of their pc’s. The nineties saw the rise of html applications, taking advantage of open standards, enabling everybody to easily use applications everywhere. And now we’re again at a point where we can take full advantage of the power of the client workstation, but with the added benefit of using open standards, so everybody, anywhere can easily use them.

Client server 2.0 roadmap

The following image illustrates the overall Client Server 2.0 architecture. You need a server that can host the static javascript, css and html files. Then you have a browser where the actual client is running. Javascript will be used to update the user interface as needed. And you have SOA containers that host the services used by the client application.

Client Server 2.0 Architecture

I’ve created some applications using the technology stack illustrated in the next image, and have been very impressed with the productivity you can achieve this way. JQuery hides most of the browser differences, and makes most javascript tasks very easy. There are also a lot of existing JQuery plugins available, from complex datagrids, to charting, to maps integration. Creating custom JQuery/javascript components is also a lot simpler than creating components that works partly on the server and partly on the client. Huge difference with for example JSF. And finally Grails is a very productive framework for creating RESTfull JSON services.

Client Server 2.0 with JQuery and Grails

So, there you have it: Client Server 2.0 - Standards based browser applications, without a web-framework on an application server, talking to services hosted by SOA containers.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | software development, Internet, XHTML, CSS, J2EE, Web services, Ajax, RIA, Technology, SOA Patterns

IT-eye - Client-server 2.0 is taking off

Andrej Koelewijn | Sep 24, 2008 03:50 -0600

Some weeks ago i wrote a post suggesting the name client server 2.0 for browser applications which are completely generated in the browser using static javascript, html and css. No more html generation on an application server. I think this is the logical next step after RIA. Application server will turn into SOA containers, hosting all the services called by the javascript application.

Seems like Matthew Quinlan also thinks Client Server 2.0 is the right name for this architecture: How to Architect Next-Generation Web Applications.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | Internet, XHTML, CSS, Web services, Ajax, RIA

IT-eye - Jquery howto: an annimated accordion menu component

Andrej Koelewijn | Sep 22, 2008 04:50 -0600

Creating UI components using JQuery is surprisingly easy, especially when you’re used to JSF. Here’s a simple example that illustrates how to create a semantically correct annimated accordion menu. The result will look like the following image. When you click on a category the menu items below it will be displayed or hidden.

Annimated accordion menu component

The html code to implement the menu is just a semantically correct unordered list of items and subitems like in the following example:

<div id="mainMenu">
      <ul>
        <li>Kandidaat
          <ul>
            <li>
              <a href="#" id="openInvoerKandidaatForm">Invoeren Kandidaat</a>
            </li>
            <li>
              <a href="#" id="openMutatieKandidaatForm">Mutatie Kandidaat</a>
            </li>
            <li>
              <a href="#" id="openReactieKandidaatForm">Reactie Kandidaat</a>
            </li>
            <li>
              <a href="#" id="openVervolgreactieKandidaatForm">Vervolgreactie Kandidaat</a>
            </li>
            <li>
              <a href="#" id="openVerwijderenKandidaatForm">Verwijderen Kandidaat</a>
            </li>
          </ul>
        </li>
        <li>Woning
          <ul>
            <li>
              <a href="#" id="openInvoerWoningForm">Invoeren Woningen</a>
            </li>
            <li>
              <a href="#" id="openAanbiedenWoningForm">Aanbieden Woning</a>
            </li>
          </ul>
        </li>
...
</div>

A JQuery components is basically just a javascript file that you include in your html page. Inside the javascript file i defined a function called accordion which can be applied to html tags ($.fn.accordion). The accordion function adds a click event handler for every list item which has child list items (this.find(”li:has(ul)”). The event handler toggles (hides and displays) the child unordered list whenever the user clicks on the parent list item. I’ve also added a slow parameter, which annimates the hiding and displaying.

The accordion menu also adds an event handler to all child list items, to prevent the click event from bubling up to the parent list item, otherwise the menu items would also be hidden and displayed when selecting a child list item.

(function($){
  $.fn.accordion = function(){
    this.find("li:has(ul)").click(function(){
      $(this).children().toggle("slow");
    });
    this.find("li ul li").click(function(event){
      event.stopPropagation();
    });
  }
})(jQuery);

To add our jquery component to an html page we need to include the jquery javascript file, our component javascript file, and some javascript which will initialize all the javascript extensions to our page after it is loaded (app.js).

<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<script src="js/jquery.ako.accordion.js" type="text/javascript"></script>
<script src="js/app.js" type="text/javascript"></script>

To turn the unordered list into an accordion menu we need to apply the component to the list after the page has been loaded:

$(document).ready(function(){
    $("#mainMenu ul").accordion();
});

That’s it. Mind you, this is a stateless accordion menu, so whenever the user reloads the page the menu is drawn in it’s initial state, so in this state it works best with single page html applications. You could make the menu stateful by adding some ajax calls to the component to save the state to the server.


Permalink | No comments | del.icio.us | Technorati | digg | dzone | StumbleUpon | XHTML, CSS, Ajax, RIA