Just as Microsoft advanced the state of the art for programming on Windows, Google is trying to do the same with Web-based software. Its latest move: the release of Google Web Toolkit 2.0.
GWT translates software written in the Java programming language into the JavaScript code that browsers can run natively. The technology is designed to produce fast-executing JavaScript and ease the pains of incompatibilities among different browsers.
Google Web Toolkit, released Tuesday night at a Google Campfire One developer event, fits in with the company's general push to make the Web a more powerful foundation for applications, not just static Web sites. The financial reasoning the company offers boils down to this: more use of the Web means more searching on Google and more search advertising revenue.
GWT is an open-source tool. Among the newer Web sites Google built with it are Wave, Orkut, and the AdWords interface.
"We've been working with those teams in applied R&D in the last year to evolve to meet their needs," said GWT product manager Andrew Bowers. Specifically, he mentioned three new features in the refurbished GWT:
Speed Tracer, a Chrome browser extension that graphs a Web application's sluggishness over time.
The tool is designed to help Web developers find problems in the complex interactions of JavaScript, the Hypertext Markup Language (HTML) that's assuming new duties in describing a Web page, and the Cascading Style Sheets (CSS) that handle formatting chores. "As more functionality moves from standard JavaScript into HTML and CSS, a lot of things are moving to native functionality, it gets harder to find performance problems," Bowers said.
"Code-splitting" technology to break Web applications up into urgent sections that must be downloaded immediately and the other parts that can be sent at a more leisurely pace.
Bowers likened the incremental application download feature to streaming video, where people can start watching the video before the full movie has been downloaded. The feature was developed with the Google Wave team, he added.
Coming from work with the AdWords team is UiBinder, which lets programmers separate an application's user-interface code from the program logic that actually does the thinking. The result: user interface designers can be given free reign without the logic programmers worrying about everything breaking, Bowers said.
Google also has used GWT to develop Google Health and iPhone Web applications such as Google Latitude and Gmail.
But GWT isn't universal at Google. Google Docs and Gmail, for example, rely on JavaScript but don't use GWT. Some of those projects grew from code bases that predate GWT, Bowers said.
But Google is working pretty hard on another JavaScript programming tool called Closure, which has its own compiler to produce fast JavaScript. It's another open-source project, and not just a historical artifact.
Different strokes for different folks, said Bruce Johnson, GWT's technical lead of the different tools.
"Probably Closure is going to be more targeted at someone who wants to write JavaScript to begin with," Johnson said. "GWT is for Java developers or people who see additional benefits to programming that way."
With Internet Explorer 9, Microsoft showed Wednesday it's trying to retake the browser initiative.
IE remains the Net's dominant browser. But perversely, it became something of a technology underdog after Microsoft vanquished Netscape in the browser wars of the 1990s and scaled back its browser effort.
That left an opportunity for rivals to blossom--most notably Firefox, which now is used by a quarter of Web surfers, but also Apple's Safari, which now runs on Windows as well as Mac OS X, and Google's Chrome, which aims to make the Web faster and a better foundation for applications.
Microsoft has been pouring resources back into the IE effort, though, and at its Professional Developers Conference in Los Angeles, some fruits of that labor were on display. In particular, Windows unit president Steven Sinofsky showed off IE 9's new hardware-accelerated text and graphics.
The acceleration feature takes advantage of hitherto untapped computing power in a way that's more useful than other browser-boosting technology--Google's Native Client to directly employ PC's processor and Mozilla's WebGL for accelerated 3D graphics, for example--according to Dean Hachamovitch, general manager of Internet Explorer.
"This is a direct improvement to everybody's usage of the Web on a daily basis," Hachamovitch said in an interview after Sinofsky's speech. "Web developers are doing what they did before, only now they can tap directly into a PC's graphics hardware to make their text work better and graphics work better."
... Read moreGoogle, ever eager to renovate the computing industry for the benefit of the Web and its own business, is working to link two nascent but potentially significant projects, its experimental Go programming language and its Chrome Web browser.
Gordon, Go's gopher mascot
Specifically, the company is building a foundation to let programs written in Go run directly within a Web browser endowed with Google's Native Client software. Native Client is designed to let browser-based programs run faster than is possible with today's widely used JavaScript; though it's still in its early stages, it's built into Chrome and available as a plug-in for other browsers.
A little poking around the Go source code reveals a reference to NaCl, the abbreviated name for Native Client. And Native Client is indeed on the Go agenda, said Rob Pike, one of the five core members of the Go team, in a Wednesday interview.
"We have an embryonic implementation of the NaCl support for Go using 8g," a compiler that produces code for x86 chips such as Intel's Core line, Pike said. "It's restricted by a couple of details of NaCl's implementation, but we hope to see changes to NaCl one day that will make Go a full-fledged language in that environment."
The Native Client compiler--the tool that converts what people write into software a computer can run--is specially modified to screen out a variety of software instructions that could expose a computer to an attack from a Native Client module downloaded off the Web. And the Native Client software itself checks such modules before they run. The result, if the security approach stands up to security scrutiny, is browser-based software that runs close to the speed of ordinary software that runs natively on a PC.
Native Client has been maturing, the most recent stage being inclusion of NaCl within Google's Chrome browser, though disabled by default for now. Google is using Chrome as a vehicle to distribute other Web technology, too, including Gears, which can let people use Gmail while offline, and WebGL, which gives hardware acceleration to 3D graphics in the browser.
Go is only experimental at this stage, but Google hopes to use it to produce some of the software running on its vast array of servers. Google's scale makes even academic projects potentially commercially relevant, which is enviable to many companies who've tried to get projects off the ground.
Indeed, an episode earlier in the Go team's history is illustrative. Pike, Unix co-inventor Ken Thompson, and Russ Cox all worked on the Plan 9 operating system project that, like Unix, began at Bell Labs. (Yes, Plan 9 is named after Ed Wood's famously bad movie, "Plan 9 from Outer Space.")
Unlike Unix, Plan 9 didn't have much commercial success, although Vita Nuova does sell a version called Inferno. Getting a mainstream operating system off the ground is hard: you must convince programmers, software companies, and hardware makers to embrace it; you must convince people to use it in the real world; and you must keep pace with the evolution of entrenched operating systems.
A bit of Plan 9 lives on inside the Go project, with various Plan 9 tidbits appearing in the Go source code. Pike, though, says there's not much.
Glenda, the Plan 9 bunny mascot, looks similar to Gordon, Go's gopher mascot. Both were drawn by Rob Pike's wife, illustrator Renee French.
(Credit: Bell Labs)"The 6g/8g/5g compilers are almost completely new but are tied to the open-source Plan 9 compiler suite's C compilers and linker," Pike said. "That's really about it except for the obvious historical connection for some of the protagonists: Ken, Russ, and myself."
Programming languages face similar challenges as operating systems in getting off the ground: A lot of interdependent elements in the ecosystem must all be built simultaneously. It's what's known in the trade as the chicken-and-egg problem: you can't make a chicken without an egg or vice versa.
But Google makes things different for Go. It's devoting real resources to the project and believes it could be useful on its own servers to run software such as the Gmail service Web browsers tap into. It's got the chicken and the egg under its own roof.
And with the money Google could save by increasing the performance or efficiency of its servers even just a fraction of a percent, it has abundant financial incentive to make things work.
Marrying Go to browsers is just another aspect of the same issue.
Assuming Go and Native Client mature enough to be useful, Google can't mandate that Web developers embrace them; indeed, they generally haven't embraced Gears even though it can help with some Web site matters. But again, Google has a browser and some awfully big Web sites it can use to get the ball rolling.
With a project called Closure Tools, Google plans on Thursday to start helping developers who aspire to match the company's proficiency in creating Web sites and Web applications.
Google is a strong proponent of using JavaScript to write Web-based programs, part of its Web-centric ethos. Indeed, the company has pushed the language to its limits with services such as Gmail and Google Docs, and it developed its Chrome browser in part to enable JavaScript programs to run faster.
But writing, debugging, and optimizing heavy-duty JavaScript can be difficult--in part because a given JavaScript program sometimes works differently on different browsers. Google's open-source Closure Tools project is an attempt to help with some of these challenges.
The first in the suite of tools is the Closure Compiler, a software package designed to boil down a JavaScript program so it's smaller and runs faster. For example, a function named DisplayAddress() could be replaced with just a().
Along with the compiler come some extra tools that run in the Firefox browser. One, Closure Inspector, is an extension for Firefox's Firebug add-on designed to help programmers understand and debug the rewritten JavaScript--linking a() back to DisplayAddress(), for example. Another add-on for the Google Page Speed extension lets programmers see how much the compiler helped.
Google also plans to make the compiler available as a Web application hosted on its Google App Engine service.
The second element is called the Closure Library, a collection of prebuilt JavaScript code that lets programmers handle relatively sophisticated technology--arrays and string manipulation, for example.
Last are Closure Templates, more prewritten code to ease creation of JavaScript and HTML user interfaces.
In an earlier era, programming tools were expensive packages bought by a select few, but open-source software, new marketing strategies, and new business methods have made that approach the exception rather than the rule these days. Now programming tools are often a means to another end--encouraging programmers to produce the software that will make Windows or the Palm Pre useful and therefore popular, for example.
In Google's case, the objective is often to make the Web more popular because it sees more activity on the Web as corresponding directly with more activity on its revenue-generating search site. Among the high-profile projects to this end are Chrome, Chrome OS, and Android, all subsidized by Google's powerful search-advertising business.
One interesting contrast to Closure is another Google project called Google Web Toolkit. It's designed to accomplish some of the same goals as Closure, including paving over browser incompatibilities and producing high-performance JavaScript. But with GWT, coders write programs in Java that gets translated into JavaScript.
So one last question: why the name?
Google's reply: "Being a functional language, the concept of a function closure is fundamental to the JavaScript language."
Google has built its Native Client technology into its newest version of Chrome, endowing the browser with new processing power for running Web applications.
Native Client, or NaCl for short, is an ambitious Google project that, if successful, will help close one gap that separates Web applications from those that run natively on a computer's operating system. That would improve the competitive position of Web applications such as Google Docs compared to Microsoft Office--and thereby boost Google's Chrome OS project in comparison with Windows.
Most Web browsers run programs written in JavaScript or perhaps Flash, both of them running on a programming foundation that makes those programs slower than native software. But Native Client lets programmers write software that directly taps into x86 chip models such as AMD's Athlon or Intel's Core. Secial programming tools and a screening mechanism in the Native Client software itself are designed to provide security for what has historically been the risky process of downloading executable programs from the Net
Chrome Version: 4.0.220.1, released Friday, "introduces the Native Client as a built-in feature for the first time on Windows," said Jonathan Conradt, a Google engineering program manager, in a blog post about the release. Previously the software was available only as a browser plug-in.
Google also offers a variety of basic tests and more elaborate examples of what Native Client can do, though it takes a bit of technical configuration to get them working. Among them are spinning ray-traced globes, the Game of Life, and the Quake first-person shooter video game.
Native Client shows how Google is using Chrome as a vehicle to advance its Web programming agenda. While some competitors such as Microsoft have a strong business of software that runs natively on a computer, Google wants software to run on central servers on the Internet.
This cloud computing approach has some advantages--being able to more easily collaborate and share documents for example, or to see and edit documents using any PC or smartphone. Google was born on the Web and has an incumbent's advantage there over rivals, but as an applications foundation, the Web remains slow and primitive compared to native applications in many regards.
Native Client isn't the only effort to change that situation. Google also has a plug-in called O3D--also a project it's building into Chrome--designed to let programs tap into hardware-accelerated 3D graphics. It works at a higher programming level than a related effort from Mozilla and Firefox called WebGL.
Google first released Native Client in December 2008. In June 2009, declaring confidence in NaCl's security model, Google it announced it was bringing Native Client out of research and into production.
Though Native Client is built into the new Chrome version, there are plenty of qualifiers for the release. First, it's only in the developer preview version of Chrome, and only for Windows right now. Second, it's disabled by default; adding "--internal-nacl" as a command-line switch at Chrome launch will activate it, according to an explanatory page.
The new version of Chrome offers a variety of other features too, notably a number updates for extensions to let people customize the browser.
For example, extensions now appear as an option on the wrench menu for browser settings. More obviously from a user-interface perspective, the browser actions interface (see illustration below) is now available to place extensions in the form of a button to Chrome's main toolbar.
Browser Actions is a new extensions interface that let browser customizations take the form of small icons in the browser's main toolbar. This illustration shows what Google believes to be an overabundance of such extension buttons.
(Credit: Google)Yahoo on Tuesday released version 3 of its Yahoo User Interface library, a software collection programmers can use to endow Web sites with fancy user interface elements written in JavaScript and Cascading Style Sheets.
"YUI 3's core infrastructure and its utility suite are all considered production-ready with today's release," Yahoo's Eric Miraglia said in a blog post Tuesday. "The code we're shipping today in 3.0.0 is the same code that drives the new Yahoo Home Page, and it goes out with confidence that it has been exercised vigorously and at scale."
The YUI libraries are open-source, freely available, and used widely around the Internet for Web site tasks including animation, drag-and-drop, fetching data from various types of sources, and responding to events--chores that are more complicated but that often are useful as the Web moves from static Web pages toward interactive applications.
Compared with YUI 2, the new version is smaller, faster, easier to program with, and more secure, Yahoo said. It's easier to break code into minimum-size pieces through a dependency configurator or YUI's ability to download required components on its own. Also, Yahoo is working to add widget abilities for creating small programs.
A convenient YUI feature is that Yahoo is willing to host most of it on its own servers, saving hassle and Web server bandwidth.
The new version is the first ground-up reworking of the software since 2005. No doubt YUI will be the subject of discussion at Open Hack Day and YUIConf, both in October.
This chart illustrates the smaller file sizes of one YUI 3 libary that helps with retrieving data from various sources.
(Credit: Yahoo)Adobe Systems released on Monday beta versions of three programming projects for producing online applications that run in its Flash Player, software that's widely used but also under competitive threat from other Web technologies.
First is a beta version of Flash Catalyst, a programming tool that's meant for the designer crowd rather than the coding crowd. Catalyst lets designers create a Flash application's user interface in Adobe's Photoshop and Illustrator applications, import the files, attach a variety of actions to user interface elements, then produce the Flash application for production or for handing off to more serious programmers.
Second is the beta of Flash Builder 4, the harder-core programming tool previously called Flex Builder. This tool, based on the Eclipse programming software, employs Adobe's open-source Flex framework for building advanced Flash applications and is for the serious programming set who works in an integrated development environment (IDE). For example, it can be used to link Flash applications with a variety of back-end data sources for advanced features.
Third is the beta of Flex 4 framework that provides underpinnings for Flash applications, including everything from user interface components to animation technology. Flex 4, code-named Gumbo, is an open-source project.
Flash got its start as a way to produce animations on Web sites, leading to gripes that its timeline-based view of the world was alien to programmers. For the animation-oriented set, Adobe still offers its Flash Professional software, but for others, Adobe has the Flex-based approach for producing Flash applications.
Adobe offers a variety of tools in an attempt to appeal to a variety of programming styles. A single project can bounce among different people using the different tools, said Steven Heintz, principal product manager of the Adobe Platform business.
"We've really made all these tools work together," Heintz said. "For pieces of the same project, you can use the tools best for the job. We believe this is better than jamming all this together into one massive tool that's totally inappropriate."
Flash faces a number of challengers. Most directly is Microsoft's Silverlight, version 3 of which is set to be launched July 10. But Google, Yahoo, and browser makers also are advancing what can be done directly in Web browsers without relying on plug-ins such as Flash or Silverlight.
And HTML 5, an still-in-progress revision of the Hypertext Markup Language used to describe Web pages, comes with a variety of features such as the ability to run multiple tasks at the same time and to play video and audio as easily as browsers can display images today, and Google, Apple, Opera, and Firefox developer Mozilla are pushing what can be done with the JavaScript language for programming Web pages.
Adobe argues that it's got consistency on its side with Flash, though. Web users tend to upgrade to the newest Flash player relatively rapidly, and Flash works consistently regardless of which browser it's plugged into or which operating system it's running on. For programmers in the HTML camp, Adobe offers its DreamWeaver development software.
In contrast HTML and JavaScript--including advanced JavaScript applications built with technology called Ajax--varies from browser to browser, said Shafath Syed, a product marketing manager with the Adobe Platform group.
"We've come full circle" in the browser market to the mid-1990s browser wars, with different interpretations of standards and new features and differing support for that technology, Syed said. "That's always a challenge."
Another challenge both camps face is spreading to the increasingly important realm of mobile phones. Flash, for example, doesn't run on Apple's iPhone and is still under development for phones based on Google's Android operating system. Those devices support JavaScript and some HTML 5 features, though, they, of course, lack much of the processing power and memory to make full use of it.
The Adobe programming tools also can be used in the production of applications that run on AIR, the Adobe Integrated Runtime that lets Flash applications run on their own outside a browser.
Facebook plans to announce at a developer event Monday that it will open up user-contributed information to third-party developers, according to a report Sunday in The Wall Street Journal.
The move would allow developers to build applications and services that--with users' permission--access user videos, photos, notes, and comments. The move would be a significant change for the social-networking site, which had previously retained tight control over the site and how developers interact with it.
To allow developers to take advantage of the free feature, Facebook users would have to give the companies access to their data, and users' privacy settings would extend to new services built, according to the report.
Allowing developers to track shared data would be another salvo in its assault on micro-blogging site Twitter, which allows third-party developers to build applications and services on top of its service.
The move seems a continuation of APIs (application programming interfaces) Facebook launched in February that let developers access content and methods for sharing in Facebook apps including Status, Notes, Links, and Video.
Of course, all this hinges on persuading Facebook's 200 million users to share their personal data, a topic that ruffled some feathers in February. Facebook users threatened to revolt after the company announced changes to its terms of service that had meant that its license on user content--a longstanding but little-publicized claim to an "irrevocable, perpetual, non-exclusive, transferable, fully paid, worldwide license" for promotional efforts--would no longer expire if a member deleted his or her Facebook account.
But facing a rebellion from thousands of users and a possible federal complaint from the Electronic Privacy Information Center, the social-networking service returned to its previous terms.
A lot is happening on Facebook. Not only are your friends telling the world what's going on in their lives, but the social network itself is changing. It's more open now than before, thanks to the Facebook Connect program, and there are several good products that let you see Facebook data in new ways. You don't have to use Facebook.com to use Facebook anymore. Here are some of the best desktop applications.
The newbies: AIR apps
Seesmic for Facebook
An Adobe AIR app, Seesmic for Facebook (news) uses Facebook Connect to let you update your status and view friend status updates without surfing to the Facebook site. It's in beta testing, but it works as advertised: updating status is quick and easy, and whenever a friend updates their own status, it's there for me to see. It's a little buggy, but it was just released.
TweetDeck
TweetDeck is one of the most popular Twitter desktop clients, and now the app's developers are vying for Facebook dominance too. The upcoming version of TweetDeck lets you send a message just to Twitter, just to Facebook, or to both simultaneously. Once installed, the new version also includes a column displaying friends' status updates, and it offers the ability to chat with them via Facebook chat directly. The app isn't available to everyone just yet, but its public release is right around the corner.
Windows Apps
Facebook Desktop
A Windows-only app, Facebook Desktop provides real-time updates, lets you see wall posts, view messages, and read friend requests. It's one of the best-looking apps, too.
Facebook Photo Uploader
The folks at the Google Code Base have a neat little desktop app for Windows users that allows them to upload photos directly to Facebook and tag them before they get to the service. It's not the best-looking app, and it's a little buggy, but I'm impressed by its ease of use.
Lightweight and unobtrusive makes Tray a great app.
(Credit: Facebook)Facebook Tray Notify
Sometimes, a desktop client just gets in the way. If you feel that way, turn to Facebook TrayNotify. It's a lightweight app that sits in your taskbar awaiting Facebook notifications. Once it receives them, alerts pop up, letting you know about the updates. If you want to act on them, you'll need to go to the Facebook site to do so.
FBLook
FBLook is useful, if you're an Outlook user. Besides filling you in on friends' status updates, you can update your own Facebook status, and see notifications and requests without going to the Facebook Web site--it all works within Outlook on your desktop. Although I'm running a Mac every day, I still use FBLook whenever I run my Windows machine. In fact, it's one of the first apps I fire up.
FBQuick
If you're looking for a nicely designed app that will work on your Windows PC and give you some of the best functionality around, look at FBQuick. The app sends you profile notifications, including tagged photos, pokes, and messages, but it doesn't allow you to update anything while on your desktop.
Fonebook
If you're an Outlook user, and you have a mobile phone that supports Outlook, check out the Fonebook app. Once installed on your desktop, the app will transfer your contacts and photos from Facebook to Outlook. The app copies a contact's photo, Facebook profile URL, the "About me" details, and status. That can then be synced with an Outlook-compatible phone so whenever someone calls, the person's picture and information will pop up on your mobile-phone screen.
Mac Apps
Dashboard Widget
Dashboard Widget gives you Facebook on your OS X Dashboard. It will display messages, pokes, friend requests, group invites, and other notifications. It updates whenever new notifications filter in.
Exporter for iPhoto couldn't be easier to use.
(Credit: Facebook)Facebook Exporter for iPhoto
If you want to upload photos into Facebook, and you don't want to waste your time firing up Safari, use the Facebook Exporter for iPhoto. It's the best photo-uploading service for Macs. It allows you to find photos in iPhoto, tag them with your friends' names, add captions, and upload them as an album to your profile. It's incredibly easy to use.
FacebookSync
If you're an Address Book user, FacebookSync will automatically sync information from Facebook into your Apple Address Book. The service finds matches in your friends list and adds all their information, including name, address, phone number, and other data to your Address Book. It even adds their photos to the app.
Facile
If you simply want to update your status update or view all your friends' status updates, Facile for the Mac is a nice way to do it. It provides a simple interface showing your friends' profile pictures and latest status updates, and allows you to input your own updates above the list (it's a lot like Seesmic for Facebook).
FriendSaver
This is a Facebook screensaver. It finds your friends tagged in photos and starts displaying those in succession while your Mac is dormant. And if you want to take some friends out of the queue, you can filter them out with a simple click. Or just display your male or female friends.
PhotoBook
A Facebook photo browser for your Mac, PhotoBook allows you to manage, share, and view your friends' Facebook photos without ever going to their profile pages. All the photos are available on a single page, and they can be viewed by tags or in a slideshow. Every photo or album can be downloaded into iPhoto.
The others
Bloom makes it easy to add images.
(Credit: Facebook)Bloom
Bloom, available for Mac, Windows, and Linux, allows you to upload photos, download other albums, and view your friends' photos without surfing to Facebook pages. A recent update allows you to add captions to images, rotate them before you upload, and tag different people. It has a simple drag-and-drop interface.
Drag-and-Drop Uploader
If you don't want all the extras that Bloom provides, Drag-and-Drop Uploader (for Windows) makes it simple to add images to your Facebook profile. The service is lightweight, and in a matter of seconds, you can drag photos from your desktop and add them to the app, which will then be uploaded into albums in your profile.
DeskBook
The Windows app DeskBook allows you to access Facebook features and information without accessing your profile page. Regardless of whether you want to see how many notes you've received, how many friend requests you've ignored, or if you want to just search for friends, DeskBook does it all. It even lets you accept or reject group and event invitations, as well as friend requests. It's my go-to app when I want to get the full Facebook experience without going to my profile page.
Facedesk
There's not much to Facedesk, but that is its appeal. The app can be downloaded to your desktop, and it runs Facebook directly in the app instead of your browser. Yes, it acts like a browser, but it runs only Facebook, so you won't be able to open any other sites. It's Facebook for people who care about nothing else in the world.
Flair
Flair's functionality won't blow you away--it's a notification app that lets you know when a friend wants to add you, or you receive a poke--but it does that in a lightweight bundle that doesn't hog resources, and it offers one of the best designs of any app in this roundup. It's not unique, but it sure is pretty.
Zebr
AIR app Zebr allows you to update your status without going to your profile page, and it keeps track of your friends' status automatically.
Mozilla Labs on Thursday unveiled a new open-source project called Bespin, a Web-based programming environment its developers hope will combine the speed and power of desktop-based development with the collaborative benefits of cloud computing.
Bespin 0.1 is only an "initial prototype framework that includes support for basic editing features," according to the site, but Mozilla has high hopes for the project. "We're particularly excited by the prospect of empowering Web developers to hack on the editor itself and make it their own," said Ben Galbraith and Dion Almaer in Mozilla's Bespin announcement.
... Read more




