ECMAScript 4 Milestone 2 Released

ECMAScript 4 Milestone 2 Released
ECMAScript 4 M2 has been released and Francis Cheng has posted about the new version. M2 fully implements: classes and interfaces namespaces pragmas let, const, let-const iterators enumerability control type expressions / definitions / annotations runtime type checks (”standard mode”) nullability destructuring assignment slice syntax […]

ECMAScript 4 M2 has been released and Francis Cheng has posted about the new version. M2 fully implements:

  • classes and interfaces
  • namespaces
  • pragmas
  • let, const, let-const
  • iterators
  • enumerability control
  • type expressions / definitions / annotations
  • runtime type checks (”standard mode”)
  • nullability
  • destructuring assignment
  • slice syntax
  • hashcode
  • catchalls
  • map & vector
  • date & time improvements
  • meta objects
  • static generics
  • string trim
  • typeof
  • globals
  • expression closures
  • name objects
  • type operators (is / to / cast / wrap)

Francis also posted about Vectors:

A new built-in class named Vector is proposed for ECMAScript edition 4. This class is similar to the Array class, but is designed for better performance, efficiency and error checking. Some interesting aspects of the Vector class:

  • vectors are dense;
  • vectors do bounds checking;
  • vectors can be fixed length;
  • vectors have type parameters;
  • vectors have the same methods as arrays.

David Tucker has posted about Colin Moock and his new lecture notes on the language changes that include:

  • Generic Functions: This functionality will add Java-style method overloading to ActionScript. A function must be defined with the keyword generic, but then mutliple methods (with different method signatures) can be used.
  • Iterators and Generators: Increased support for iterating over a series of values using a class defined iterator. Both of these items are very Python-like.
  • Proper Tail Calls: A function can properly call another function as its last operation - this adds increased support for recursion patterns.
  • New Number Types: byte, double, decimal (and the current generic ‘Number’ type would be removed)
  • Numeric Suffixes: As in Java, numeric literals will have suffixes to denote their specific numeric type.
  • Vector Type: As in Java, there will be a mono-typed array called Vector. Length can optionally be pre-defined at creation.
  • Record Type: Describes the details of an object - easier to create than a class. I believe it is dynamic - in that it has required values, but additional properties can be defined per instance.
  • Array Type: A type that describes what will be contained within an array. For example - you could say that you will have a 7-element array made up of Strings.
  • Union Types: A property (or argument) could be one of a list of types (as opposed to now where a property has to be of one type - or no type). This would give you the ability to have an argument that could be a String or XML - but nothing else.

ES4 keeps on chugging.

Usenet Newsgroups: Anachronistic Service or Useful Communication Tool?
Earlier this week ITS announced that it would be taking down the Usenet news server as of December 5, 2007. In a fit of nostalgia, I opened up my newsreader (Mozilla) to leave a farewell message on cwru.general. Oddly enough, my message got a response; others (not many) were still using Usenet! This led me to wonder what had happened to newsgroups. Did the generation that grew up on the Web not know about newsgroups, or did they know about them but prefer the Web? In this age of Web 2.0, where some update their Facebook status by the hour, users pose questions on discussion boards such as http://forum.case.edu, and writers merge their Twitter, Pownce and Jaiku posts into central RSS feeds that can be shared on their Tumblr blogs, is there still a place for Usenet news?

Seamonkey Reader

Google Groups
alt.politics.usa.constitution as seen in
Seamonkey (above) and Google Groups (below).
Click on the images to enlarge.

Earlier this week ITS announced that it would be taking down the Usenet news server as of December 5, 2007. In a fit of nostalgia, I opened up my newsreader (Mozilla) to leave a farewell message on cwru.general. Oddly enough, my message got a response; others (not many) were still using Usenet! This led me to wonder what had happened to newsgroups. Did the generation that grew up on the Web not know about newsgroups, or did they know about them but prefer the Web? In this age of Web 2.0, where some update their Facebook status by the hour, users pose questions on discussion boards such as http://forum.case.edu, and writers merge their Twitter, Pownce and Jaiku posts into central RSS feeds that can be shared on their Tumblr blogs, is there still a place for Usenet news?

I think perhaps there is. But before we ponder that, perhaps we need to review—for those who don’t know—what Usenet is/was all about.

History

Many users today think of the World Wide Web and the Internet as being interchangeable. But as most of you know, the WWW is only one of many protocols used on the Internet. Back in the era before the WWW (which most users didn’t access until 1994-95), Usenet was one of the most popular features of the Internet. To some it still is.

First created in 1979, Usenet allows users to share thoughts and ideas with one another on a variety of topics ranging from the Internet itself to the latest episode of CSI. While T. V. viewers now discuss their favorite show on Web-based forums, in those days folks dissected X-Files episodes on alt.tv.x-files. (Actually they still do.)

How Usenet is used

As one uses a Web browser to surf the Web, one uses a newsreader to subscribe to and read/respond to newsgroups. Some news readers are stand-alone programs, while others are built into e-mail programs or Web browsers and Internet suites. Once the reader is installed, the user configures it to connect to a news server just as one would configure an e-mail program to use a certain e-mail server. Most Internet service providers offer news server access.

With the newsreader installed and configured to access the appropriate server, users can then subscribe to any of thousands of newsgroups based on their interests. This will be familiar to those of you who use RSS readers to read blogs. With a newsreader you would typically call up a searchable list of the newsgroups provided by your server and subscribe to those you like. Once subscribed you would select a group from your subscription list and download the latest headers (subject lines, that link to messages) to read the various posts. From there you can respond to an existing discussion or start a new thread, just as you would on a discussion forum, but more similar to e-mail in that you can include attachments.

There are thousands of newsgroups available on the internet with topics ranging from alt.tv.survivor to alt.politics.usa.constitution. Many of these will be available through your Internet Service Provider’s news server, but some may be limited to certain servers.

To learn more about using Usenet newsgroups refer to the resources listed at the bottom of this entry.

Is Usenet still viable?

Given the research I’ve done today, Usenet seems to be alive and well—particularly in certain circles. Those circles would be those interested in file sharing. As I’ve been exploring this issue I’ve noticed two trends:

  • Newsreaders such as Binary Boy geared towards optimizing music, picture and movie sharing
  • Uncensored News Servers, such as Tera News offering uncensored access to groups, anonymous posting and firewall counter measures

I’d like to think that the above are being used to provide more efficient news reading or to give access to users living in countries with unreasonably strict censorship laws; but I’m guessing these folks are making their money by offering an easy way for people to trade naughty pictures and pirated media. With prices for some servers ranging anywhere from $7 to $49 (and up, depending on download limits) per month, I don’t think folks are signing up to share their grandmother’s bundt cake recipes.

What about the rest of us? Is Usenet still a good way to share information, discuss politics and find out how to clean the headlight lenses on your ‘96 Passat? I think it could be. This evening I installed Mozilla’s Seamonkey Internet Suite, on my home computer, to use as my newsreader and subscribed to some of the groups I’d read in the past such as alt.www.webmaster. The group was alive and well, filled with the same kind of reasonable questions, helpful advice, spam and people who shouldn’t be thinking of starting a Web design business, as it always was. Newsgroups are like that, but so are discussion boards. Some members will be knowledgeable, others never will be, and some just want to push their product or start a flame war. A lot of good information can still be traded.

If one is looking for discussion geared towards very specific topics I think Usenet works well for two reasons.

  • One Stop Shopping: One can subscribe to groups on cars, sports, T. V. shows, politics, philosophy, etc. and view them all in one place as one does with RSS readers.
  • Threaded Discussion: This format is really easy to use. You are presented with a list of headers, so you can choose which topic to read, and then all the messages in the thread are listed below (the way this works may depend on your reader). Google Groups offers Web-based access to newsgroups, but if there are more than a few messages in a given topic it can be very hard to follow. Google presents them in full in order, rather like Gmail. But when you get a few hundred this also involves multiple pages and can be tricky to navigate.

Perhaps I’m just being nostalgic, but this still seems like a pretty efficient way to communicate. Back in the day, I got a lot of good information from newsgroups, and I think if one chooses a group with an active, knowledgeable subscriber-base one still can. And if that is the case one can use these to network, share ideas, promote Web sites and blogs (but only in the context of providing meaningful content to the group) just as one can with Web-based services.

What do you think? Is there a place for Usenet in your social media world?

Usenet News Resources

P.S. When mentioning specific newsgroups I linked to them using the news protocol. These will only work if you have configured a newsreader in your browser and are using a server that includes that particular group.

Kevin Hakman joins Aptana
When we posted the last podcast on Aptana Jaxer, someone commented on the fact that Kevin Hakman was there, and “Doesn’t Kevin Hakman work for Tibco? What does he have to do with Aptana?”. Aptana has now come out with the news that they have hired Kevin: We are excited to announce that Kevin Hakman has joined […]

When we posted the last podcast on Aptana Jaxer, someone commented on the fact that Kevin Hakman was there, and “Doesn’t Kevin Hakman work for Tibco? What does he have to do with Aptana?”.

Aptana has now come out with the news that they have hired Kevin:

We are excited to announce that Kevin Hakman has joined Aptana to head up marketing and developer community programs. Kevin is a recognized leader in the Ajax community. Long before the term “Ajax” was coined, Kevin was pioneering single page web application concepts via the company he co-founded, General Interface Corp., one of the first enterprise Ajax libraries and visual development tools companies. General Interface Corp. went on to be acquired by TIBCO Software in 2004 as a compliment the company’s service-oriented architecture (SOA) products. Today TIBCO General Interface is used by many Fortune-scale companies for rapid Web application development and deployment atop their XML and SOAP data sources.

In addition to his historic role on the steering committee of the OpenAjax Alliance, Kevin currently chairs the organization’s integrated development environment working group. The OpenAjax Alliance IDE Working Group which includes Adobe, Aptana, the Eclipse Foundation, IBM, Microsoft, Sun, TIBCO and others is now close to delivering a draft specification for a uniform way to describe Ajax libraries and controls and thus streamline the ability to use Ajax libraries within your development tools of choice. Kevin is a frequent speaker at Ajax industry events and is an author to many published articles on Ajax in the enterprise.

I asked Kevin a couple of questions about his move, comparisons between the companies, and the industry in general.

What similarities / differences do you see between pioneering heavy JavaScript on the client w/ GI and JavaScript on the server with Aptana

GI and Aptana’s primary application models are different to serve different purposes similar to the way that Java has multiple presentation tier architectures for differents kinds of apps: Swing, SWT, AWT for application GUIs and JSP, JSF for generating web pages. With GI, the concept in 2001 when we deployed some of the first “Ajax” apps pretty much evolved from a need to migrate software-style GUIs to the Web and a technical approach summarized as “we like Java Swing, but not the JRE dependency, so let’s do something Swing-like in JavaScript with a JavaScript VM of sorts and get data as XML / SOAP via the XML HTTP Request Object — an oh yeah, make it Visual Basic-like easy to visually develop too”. That led to what I call a “Client-Services” architecture where you have a full fledged JavaScript application running in a web page talking to back-end data services plus the WYSIWYG rapid development tools for which GI has been recognized as best in class in enterprise IT journals. With GI, you never really interact with the HTML page or its DOM. Instead there’s a higher abstraction of application concepts and a model of the GUI, called “dual DOM” by some. The result is that the JavaScript applications are deployed into a webpage more like an applet, (except it’s all in the same JavaScript memory space and there’s no JRE dependency of course). This “Client-Services” architecture has been a great fit for many enterprises pursuing service-oriented architecture strategies.

Aptana Studio is clearly among the best-in class for the predominant model of Ajax development called “single DOM” where you work directly in the HTML DOM to describe elements within a page, then apply Ajax and CSS concepts to bring that page to life with interactive features. Aptana Studio meets the needs of Ajax developers working in this model extremely well. Whereas tools for web page development have historically focused on layout, image placement, styling, and JavaScript for roll-over and simple navigational assists, Aptana saw that with Ajax and the popularity of all the single-DOM model Ajax libraries like dojo, Ext, prototype, MooTools, and jQuery, the page was becoming increasingly programmatic in the client and needed tooling optimized for the programmatic page.

What excites you about Aptana

Aptana Jaxer is a very cool concept for all the JavaScript developers out there because they can now go boldly where no JavaScript developer has gone before–to the server-side. Sure Netscape had LiveWire back in the day, but remember there was no real DOM, no real CSS and certainly no XHR object at that time. Aptana Jaxer’s genius is that is takes the same Mozilla engine we know and love in the browser, and puts it inside a server along with a bunch of handy Jaxer methods and properties to do server-side things like interact with databases, web services, session concepts, sockets and more. I personally love the ability to write a script that runs on the server, but call it from the client as if it were running on the client. In this case Jaxer handles all the sync or async communications for you transparently, and soon will provide end-to-end debug capabilities as well. We’re also now working with Joe Walker of the DWR project to extend this kind of capability to remote Java objects as well through Jaxer. We’re also investigating how to best interoperate with Microsoft’s .NET platform.

To some, JavaScript is not a preferred language and that’s where things like GWT and DWR come in real handy. At the same time there’s millions of developers who like the ease and mutability of JavaScript. Aptana Studio, with its JavaScript debug and type inference capabilities, and Aptana Jaxer with its server-side power enable all JavaScript developers to do much more, more quickly in the language we love to work with — JavaScript! Thinking beyond the solid JavaScript programming tools in Aptana Studio today, things like visual WYSIWYG GUI composition and data-binding are clearly natural extensions. Not many people know that the Aptana team contributed to much of the Eclipse Monkey code which enables JavaScript to run within and communicate with Eclipse’s APIs. This means that Aptana is extraordinarily well positioned to execute a first-class solution for WYSIWYG editing — and further streamline the creation of Ajax web pages and full-featured Ajax applications.

Now you have been around JavaScript for awhile, what are you likes and dislikes, and do you have any thoughts on JavaScript 2?

Having been part of Ajax projects where we had single HTML pages running for 9 hours sessions with over 180 separate application modules you could load/unload during that time (and that was in 2001), the GI core team (Luke Birdeau, Michel Peachey, Jessee Costello Good, and myself) has had loads of experience in what it means to make highly scalable, full featured apps in JavaScript. Much of what we had to invent and implement in JS1.5 for the TIBCO GI Framework, things like object orientation for example and better memory management, is on the horizon for future releases of JavaScript. The primary pain of JS though, until recently, has been lack of great debugging, type inference, and code assist capabilities. What few people realize about Aptana Studio is that it not only code assists on the Ajax libraries you’ve loaded, it assist with the Ajax objects, classes, packages, functions and properties that you create too — again a concept borrowed from the Java community, but with less programmatic overhead since its JavaScript.

Leave a Reply

You must be logged in to post a comment.