Live from TSS-JS – jQuery with Bear

Below is a hightlight of a presentation by Bear Bibeault, who gave a break out talk at TheServerSide Symposium entitled “How jQuery Made Bob a Happy Man”.  Bear is well-known author of many jQuery books as well as a moderator on the CodeRanch.

1.  Overview of jQuery
The invention of Ajax has blurred the line between server and client development by providing users a more rich user experience.  jQuery is one of those emerging direct Ajax frameworks.  Bear claims you don’t need to be a JavaScript expert to use jQuery, although you to have some background in jQuery.  Also, there are many plugins that provides a large range of overall functionality.

2.  Do More With Less
jQuery simplifies JavaScript by providing the browser-dependent wrapped in very simple calls.  One line of jQuery often represents dozens of hundreds of lines of JavaScript.  Unlike Prototype, it only uses one namespace $() to simplify coding.  Excellent for finding elements using selectors, whereas in pure JavaScript this would syntactically difficult.

  • Basic Selectors.  The most commons selector can match by ID or component CSS type such as $(‘div’) and $(‘myApplication’)
  • Positional Selectors.  Filtered selection based upon DOM relationships such as $(‘div:first-child’) as defined by CSS3.
  • Custom Selectors.  jQuery-defined filters that inputs things CSS missed.  Example:  $(‘:text:disabled’) [selects all text input elements that are disabled].

jQuery also has a very diverse library for event, click, and click handlers.  Hard to imagine how we ever lived without them.

3.  Plays well with others
jQuery has supported means to give up $() namespace for other tools to use that namespace.  In this manner, jQuery and Prototype can be intermixed.

4.  DOM Manipulation
Variety of DOM manipulation elements such as move/copy, add/remove, style manipulation, position manipulation (helpful for animations), etc.  Variety of integration tools such as GET/POST/PUT/DELETE, etc for server Ajax-based calls.  Includes tools to automatically parse JSON, XML, HTML and can even execute retrieved JavaScript code.

5.  Chaining jQuery
Common jQuery interactions allow you to chain elements such as $(‘myClass’).css(‘color’,’red’).show().appentTo(‘…’).  A little strange to get used but very powerful.  There are some functions that do return values and cannot be chained as this.

6.  document-ready handler
jQuery offers a document-ready handler that fires immediately after the page has downloaded but before the page has fully displayed.  Allows you manipulate items before they have been drawn.

7.  jQuery with JavaScript turned off
One of the design goals of jQuery is to create pages that ‘degrade gracefully’ if the user has turned JavaScript has been turned off.  For example, updating the form action to match a form submit click handler in the event the form is submitted without the Ajax handler being invoked.  Some government groups require pages to work with JavaScript disabled.

8.  More with Plugins
Large variety of plugins available for jQuery that follow similar patterns/structure as the core jQuery API.  Most popular ones are jQuery UI for complex UI widgets, and jQuery Forms for advanced form handling.  There’s also validation plugin to help simplify creating complex form validation logic.  jQuery Templates can be used to create versatile client-side templating.  Finally, there’s LiveQuery for notifications and updates about elements being created and destroyed.

Conclusion
Bear reiterates the point “Do more with less and in less time” and in that jQuery is successful.

JQuery breakout – the server side java symposium

Jquery – do more with less. The talk is a scenario that helps a developer be more efficient.

Unlike Lasse Koskela, Bear Bibeault doesn’t speak like he writes  A great presentation though.  Bear is dynamic in a different way on a stage than when he’s in writing or even in person outside a formal presentation. Almost like the stage gets him in teaching mode with a large emphasis on keeping people engaged and entertained. And fast moving without being overwhelming.  The content almost gets snuck in without you noticing you are learning, which is awesome!

Covered good practices like unobtrusive JavaScript. Noted similarity to HTML 5 where tags are becoming more document centric.

I really like how all the AJAX code malls to one line of jQuery. And it’s not a contrived example either.  [when i train people on jQuery at work, I show how common idioms we use can be expressed in one line as well]  Noted the JQuery code doesn’t require a global variable to keep track of the request.

Things I learned that I didn’t already know

  • JQuery css 3 style selectors work even if you are using a browser that doesn’t properly support then.
  • You can bind event handlers to elements that don’t exist yet (I’ve used this but never really though about what was going on)
  • How to use Ajax functions beyond the bare minimum, for example specifying the target on the page for the response
  • There is a validation plugin where you can configure your own rules

Other important points that jquery users might not realize

  • Document ready handler executes before window.unload because it doesn’t wait for images to load.   It also lets you run multiple initialization functions in the order defined.

I also liked seeing jquery functions with a dozen lines to see how to do it well and in a readable manner. It requires more thinking in chaining than I’m used to, a good skill to get better at.

I didn’t write about the jQuery syntax parts. For that see the query website (docs.query.com) or read Bear’s book jquery in Action.

Glass fish and JEE 6 keynote at the server side java symposium

Oracle’s first slide is a TEN LINE disclaimer from their legal department.  Which must be standard because nothing was forward looking.

JEE 6

  • Split  sub platforms so less large
  • JEE web profile
  • New: managed beans, bean validation, CDI (dependency injection)
  • ejb 3.1 lite lets you use ejb in a war file
  • Ear files are now for backward compatibility
  • Encouraged use of setting up everything in annotations instead of web.xmk [I think somethings belong eternalized]
  • Putting a web-fragment.xml file inside your meta-inf directory lets jars contribute content to the web.xml
  • Can promote a managed bean to a “real ejb” to take advantage of transactions
  • Showed response builders for web services. Nice concise way if setting status, content type, result, etc.
  • Ejb 3.1 supports singleton and start up beans. Can set scheduled tasks and asynchronous tasks in annotations as well.
  • Going to great lengths to avoid mentioning Spring,  Guice was cited as the comparison/example of dependency injection. Speaking of Spring, this is the first time I’ve seen this much JEE 6 code. It looks a lot like Spring.

Glassfish

  • Web profile ships with REST
  • Glassfish is wonderful because Oracle says so. Not taking further notes on this. Do people really use Glassfish in production?