Matt Woodward’s posterous

Matt Woodward’s posterous

Matthew Woodward  //  * CFML, Grails, and Java Developer
* Principal IT Specialist, US Senate
* Open BlueDragon Steering Committee Member
* All-Around Geek

Jan 16 / 8:45am

OpenBD gets native JSONP support

However, what if you wish your services to be consumed by a Javascript function outside of your own domain? Cross-domain scripting will prevent this. So how do the likes of delicious.com offer such Javascript integrations for their services?

You achieve this by using JSONP (JSON with Padding) and this lets you achieve cross-domain data fetching.

JSONP requires a little assistance from both the server and the client inorder for it to work. JSONP works by wrapping the returning JSON packet in () and prepending a name to make it into a Javascript document.

The majority of Javascript libraries support JSON from their native core. JQuery supports it using $.getJSON method, which simply asks that you append the URI parameter "callback=?" to the end of the remote URL and it will do all the marshalling of data for you.

Another extremely slick addition to OpenBD! It's available in the nightly build. Read more at the full blog post (link above).

Comments (0)

Dec 1 / 7:11am

CFC Function Declarations in Javascript

The last few days I have been working on having the ability of declaring pure Javascript functions and making them available as first class, top-level, citizens in the CFML world.

Setting up a separate CFC can be done using the following:

<cfcomponent>
<cfjs>
function myMethod( param1, param2 ) {
  return $cf.getTickCount();
};
</cfjs>
</cfcomponent>

Note that you can mix CFSCRIPT, Javascript and CFML in the one CFML/CFC file. Each one can declare a top-level function and you can use whatever language you feel works best for you for that particular method.

From there on in, you can simply declare the CFC as normal and use without any problems.

Great progress being made on the server-side JavaScript in OpenBD! Since JavaScript is the lingua franca of web development, it's going to be great to have it fully integrated into our CFML toolbox.

Filed under // JavaScript Open BlueDragon

Comments (0)

Nov 27 / 10:42am

Running and Accessing Queries from JavaScript on Open BlueDragon

More progress on the server-side JavaScript front--you can now run and access queries from JavaScript. See the wiki for an example of running a query from JavaScript and accessing a query that was run using CFQUERY.

Comments (0)

Nov 26 / 8:16am

Server-Side JavaScript for OpenBD Alpha Available

Quick follow-up to my previous post--you can read more about the new server-side JavaScript plugin for OpenBD on the wiki, and you can download the plugin from the OpenBD downloads page..

Comments (0)

Nov 26 / 8:12am

CFJS - Server side Javascript available for playing

As promised, I have packaged up the new javascript plugin for use with OpenBD and you can now download and start playing.

I am personally very excited about this step forward. I always believed that CFML is the best web scripting language out there on the market and when people see how easy it is to do certain things, they are hooked. Coupled with the fact CFML has broken free of it available-only-as-a-commercial-product ties there is a whole new wave of people checking the power out.

So mixing Javascript in as a first-class language to this platform creates a very powerful tool to which non-CFML developers can now crank out dynamic websites without needing to learn a single line of CFML.

The CFJS plugin for OpenBD is now available for you to try! Can't wait to hear what people think about this addition.

Comments (0)

Nov 24 / 8:23am

Server-Side JavaScript with Open BlueDragon

In all the years I've been doing CFML development, CFSCRIPT has always been a neglected afterthought. Due to the limitations I (along with many of you I'm sure) stopped using it. Every time I'd get on a CFSCRIPT kick, I'd find myself frustrated by the limitations, having to break out of script to do things that weren't supported, or taking the time to write my own wrappers for CFML tags.

If only there were a complete, robust, scripting language that web developers already know that could be used instead of CFSCRIPT ...

Using JavaScript on the server side is something we've been discussing on the OpenBD Steering Committee for a while now, and Alan Williamson outlines the progress he's made in making this a reality in a post on his blog. The Mozilla Rhino library serves as the underlying JavaScript engine for this feature, and it will also be compatible with the Google App Engine edition of OpenBD.

I think this will be a great addition to the CFML arsenal not only for the simple reason that we'll be able to write script in our CFML apps using JavaScript 1.7, but this also opens up some really interesting possibilities for integration with existing JavaScript libraries, and will offer anyone who knows JavaScript an easy path into the CFML world.

We'll be releasing a plugin for OpenBD soon and would love to get feedback on the notion of using JavaScript on the server side in your CFML apps. As Alan outlines in his blog post there are still some logistics to work out, but part of the power of open source is getting additions like this in the hands of the community early so we can get your feedback and make sure this feature meets your needs.

Let us know your thoughts on using JavaScript on the server side in your CFML apps!

Comments (1)

Nov 24 / 7:37am

CFJAVASCRIPT gets a turbo boost

We've just added a whole host of extras that have been requested by the community:

  • Ability to place Javascript code inside the tag instead of specifying external javascript files
  • Specify a comma-separated list of javascript files as the SRC='' attribute. Arrays of files still supported
  • Include-Only-Once; if you have multiple CFJAVASCRIPT tags, then we make sure you only include a javascript file only once per request. That way the browser won't get two JQuery instances!
  • Javascript placement; you can now have the resulting javascript placed at either the position the tag appears, at the HEAD or at the BOTTOM of the HTML body tag

More JavaScript goodies added to OpenBD!

Comments (0)

Sep 3 / 4:38pm

JavaScript is Becoming the Lingua Franca For All Development

Let's start with a trip down memory lane.

Way back when I got my first real job as a programmer, one of my first tasks was to work on some server-side JavaScript. Now I may be dating myself with that statement but yes, back in the dark ages there was a web server made by none other than Netscape called Netscape Enterprise Server, and you could write server-side code in JavaScript. It was darn handy, and a lot less nasty than some of the alternatives available back then, but for whatever reason it never really took off outside of Netscape's web server product.

So an embarrassing number of years later, I'm not sure we'd call what's becoming more and more prevalent these days "server-side" JavaScript, but JavaScript is living in a lot more places than your browser. And why not? It's a great language, every web developer on the planet already knows it, and for developers who don't know it, the syntax and concepts are easy enough to pick up very quickly.

We've had a few runs at JavaScript outside the browser over the years. I'm sure no one but me remembers IBM Sash, but it was a concept very similar to Adobe AIR--but predating AIR by about 7 years--that let you very easily write desktop applications in JavaScript.

I'm not sure why Sash didn't take off other than IBM's typical inability to capitalize on great technology (OS/2 anyone?), but it was a really quick, easy way to write desktop applications that were easily to download and update. And of course since it ran on the desktop you could do much more than you can within the confines of the web browser, like access the filesystem and store data offline to be synced back up later.

It was really interesting to see all the security concerns around AIR when it first came out because they were exactly the same concerns everyone had about Sash, but I wrote some pretty slick little Sash apps for internal use that did online/offline data and even file syncs (great for traveling sales people) long before AIR or even Macromedia Central. Ultimately I think the timing just wasn't quite right for Sash.

Total aside, but another attempt at this sort of functionality was REBOL, which I also spent a bit of time with a long time ago, and I was a bit shocked to learn today that it's still around. Who knew?

Anyway, back to JavaScript. Some of you know I've recently fallen in love with CouchDB, and the default view server in CouchDB is based on JavaScript. It uses the SpiderMonkey engine (a JavaScript engine written in C), and you write all your views in CouchDB in JavaScript. Simple, effective, and very powerful.

But there's much more. Today I came across Tropo, which lets you develop cloud-based communications applications in a bunch of different languages, one of which is JavaScript. Tropo is completely new to me but from their code samples it looks like what you're doing is programming telephony applications in JavaScript. Quite a leap from the button rollovers that used to be the common domain of JavaScript.

I'm sure there are numerous other examples, and perhaps nostalgia is really what prompted this post, but I think it's interesting and exciting that the language we all know and love (or love to hate) is all grown up and doing a lot of cool stuff outside the web browser.

Where else have people seen JavaScript where you might not have expected it, and what are your opinions on JavaScript as a lingua franca of development? Personally I think it's a smart move on the part of applications like CouchDB and Tropo to leverage JavaScript in this way but I'd love to hear your thoughts. I for one see a lot more JavaScript in my future.

Filed under // JavaScript Programming

Comments (0)