<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Joe Walker - future tag</title>
  <link>http://directwebremoting.org/blog/joe/tags/future/</link>
  <description>Thoughts on Web Development</description>
  <language>en</language>
  <copyright>Joe Walker</copyright>
  <lastBuildDate>Wed, 23 Jul 2008 11:00:41 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Big Question for Sun</title>
    <link>http://directwebremoting.org/blog/joe/2008/05/19/big_question_for_sun.html</link>
    
      
        <description>
          &lt;p&gt;It looks from the outside as though every spare resource that Sun has is going into JavaFX. JavaFX may or may not win against Flash/Flex/Air/Silverlight/Android/Ajax, but while Sun is concentrating on FX, it doesn&#039;t appear to be giving the Java language the updates it badly needs.&lt;/p&gt;

&lt;p&gt;Maybe Sun sees Java as &#039;done&#039;. OK, but the Java language has one of the largest developer communities in the world, and they&#039;d like some direction. Where do Sun recommend they go for their server-side development needs in 5 years time?&lt;/p&gt;

&lt;p&gt;Maybe Sun think we should change to JRuby, Scala or Groovy. Maybe there are updates to Java that I don&#039;t know about. If none of the above are the case, the community will eventually disappear into mish-mash of languages that doesn&#039;t have the strength of numbers.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;3:19pm Update: tweaked last paragraph to make the point clearer.&lt;/small&gt;&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://directwebremoting.org/blog/joe/2008/05/19/big_question_for_sun.html#comments</comments>
    <guid isPermaLink="true">http://directwebremoting.org/blog/joe/2008/05/19/big_question_for_sun.html</guid>
    <pubDate>Mon, 19 May 2008 12:35:45 GMT</pubDate>
  </item>
  
  <item>
    <title>DWR: State of the Union</title>
    <link>http://directwebremoting.org/blog/joe/2007/12/20/dwr_state_of_the_union.html</link>
    
      
        <description>
          &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;&lt;img src=&#034;http://getahead.org/images/dwr-logo.png&#034; align=&#034;right&#034; style=&#034;margin:0px 10px&#034; border=&#034;0&#034; alt=&#034;dwr-logo&#034;/&gt;&lt;/a&gt;

&lt;p&gt;So &lt;a href=&#034;http://getahead.org/dwr&#034;&gt;DWR&lt;/a&gt; is now part of the Dojo Foundation. I thought it would be good to quickly summarize where we are, and what I&#039;m working on, and to give everyone a chance to comment.&lt;/p&gt;

&lt;p&gt;DWR 2.0 has been out for 6 months or so. At the time, I swore that the next release would be a small one, called 2.1. However it appears that I’m not good at swearing because there is lots in the next release - I think we’re going to have to call it 3.0.&lt;/p&gt;

&lt;p&gt;Just as a quick recap, here’s what changed with 2.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reverse Ajax which I define as Comet or Polling or Piggyback, whichever works best.&lt;/li&gt;
&lt;li&gt;Spring Namespace support, Guice support, Annotations etc.&lt;/li&gt;
&lt;li&gt;etc. Every release needs some &lt;em&gt;etc&lt;/em&gt;. See &lt;a href=&#034;http://getahead.org/dwr/changelog/dwr20&#034;&gt;the release notes for more&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since 2.0, we&#039;ve been working on the following adding support for JSON, Bayeux, images/binary file upload/download, a Hub with JMS/OAA support and more reverse ajax APIs. I also want to get some Gears integration going.&lt;/p&gt;

&lt;p&gt;There are also a whole set of non-functional things to consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Moving the website to directwebremoting.org&lt;/li&gt;
&lt;li&gt;Restart chasing CLAs, using a foundation CLA rather than a Getahead CLA&lt;/li&gt;
&lt;li&gt;Get some lawyer to create a CLA so Getahead can grant rights to the Foundation (or something similar)&lt;/li&gt;
&lt;li&gt;Get someone to pony up and let us move to SVN&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DWR Hub and integration with JMS and OpenAjax Hub&lt;/strong&gt;: We have a hub, along with one way integration with JMS. The OpenAjax portion will be simple except for the getting the OpenAjax Hub to work smoothly with JMS part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reverse Ajax Proxy API Generator&lt;/strong&gt;: The goal with this is a program that will take JavaScript as input, and output a Java API which, when called, generates JavaScript to send to a browser. Some of this work has been tricky, but then meta-meta-programming was always bound to be hard. This currently mostly works with TIBCO GI, but more work will be needed to allow it to extract type information from other APIs. You can see an example of how this is beginning to evolve in &lt;a href=&#034;http://www.theserverside.com/news/thread.tss?thread_id=47875&#034;&gt;yesterday&#039;s article at The Server Side&lt;/a&gt;. I hope we will be able to create some Dojo integration for 3.0 too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON support&lt;/strong&gt;: One goal is a RESTian API so you can do something like this: &lt;code&gt;http://example.com/dwr/json/ClassName/methodName/param1/param2&lt;/code&gt; and DWR will reply with a JSON structure containing the result of calling className.methodName(&#034;param1&#034;, &#034;param2&#034;); It would be good to support JSONP along with this. We might also allow POSTing of JSON structures, although I’m less convinced about this because it quickly gets DWR specific, and then what’s the point of a standard. Status - DWR has always used a superset of JSON that I like to call JavaScript. We do this to cope with recursive data, XML objects, and such like. I’ve done most of the work so that DWR can use the JSON subset, but not created the ‘handler’ to interface between the web and a JSON data structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bayeux Support&lt;/strong&gt;: &lt;a href=&#034;http://blogs.webtide.com/gregw/&#034;&gt;Greg Wilkins&lt;/a&gt; (&lt;a href=&#034;http://www.mortbay.org/&#034;&gt;Jetty&lt;/a&gt;) committed some changes to DWR, which need some tweaks to get working properly. Greg still intends to complete this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File/Image Upload and Download&lt;/strong&gt;: This allows a Java method to return an AWT BufferedImage and have that image turn up in the page, or to take or return an InputStream and have that populated from a file upload or offered as a file download. I’ve had some bug reports that it doesn’t work with some browsers, also we need to find a way to report progress to a web page simply. See &lt;a href=&#034;http://ajaxian.com/archives/joe-walker-shows-a-tip-from-dwrnext&#034;&gt;this post on Ajaxian&lt;/a&gt; for more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DOM Manipulation Library&lt;/strong&gt;: Currently this is limited to window.alert, mostly because I’m not sure how far to take it. There are a set of things like history, location, close, confirm that could be useful from a server, and that are not typically abstracted by libraries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gears Integration&lt;/strong&gt;: I’ve not started this, but it needs to take higher priority than it currently does. It would be very cool if DWR would transparently detect Gears, and then allow some form of guaranteed delivery including resending of messages if the network disappears for a while.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website&lt;/strong&gt;: We need to get the DWR website moved away from the Getahead server, and onto Foundation servers. There will be some URLs to alter as part of this, and I don’t want to lose Google juice by doing it badly.
The documentation for DWR 2 was not up to the standards of 1.x, and while it has been getting better, we could still do more. One thing that has held this back has been lack of a DWR wiki. I hope we can fix this with the server move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Repo&lt;/strong&gt;: We are currently using CVS hosted by java.net. They support SVN, but want to charge us a few hundred dollars to upgrade. I expect to move away from collab.net/java.net CVS some time early next year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unit Tests&lt;/strong&gt;: I&#039;ve been trying for ages to find a way to automatically test with multiple browsers and servers. WebDriver looked good for a while, but it doesn&#039;t look like the project is going anywhere particularly quickly, so I&#039;m back trying to get Selenium to act in a sane way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Etc&lt;/strong&gt;: There&#039;s always &#039;other stuff&#039;. I&#039;ve particularly not gone into things like &lt;a href=&#034;http://weblogs.java.net/blog/jfarcand/archive/2007/11/grizzly_attack.html&#034;&gt;Grizzly support&lt;/a&gt;. There&#039;s plenty of etc in this release too.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://directwebremoting.org/blog/joe/2007/12/20/dwr_state_of_the_union.html#comments</comments>
    <guid isPermaLink="true">http://directwebremoting.org/blog/joe/2007/12/20/dwr_state_of_the_union.html</guid>
    <pubDate>Thu, 20 Dec 2007 13:20:08 GMT</pubDate>
  </item>
  
  <item>
    <title>Browser Wars</title>
    <link>http://directwebremoting.org/blog/joe/2007/12/17/browser_wars.html</link>
    
      
        <description>
          &lt;p&gt;&lt;a href=&#034;http://alex.dojotoolkit.org/?p=642&#034;&gt;Alex&lt;/a&gt;:&lt;/p&gt;

&lt;p class=&#034;quote&#034;&gt;To get a better future, not only do we need a return to “the browser wars”, we need to applaud and use the hell out of “non-standard” features until such time as there’s a standard to cover equivalent functionality. Non-standard features are the future, and suggesting that they are somehow “bad” is to work against your own self-interest.&lt;/p&gt;

&lt;p&gt;Ten years ago, in 1997, some people spent ages getting DHTML pages working across IE and Netscape, and when we were done we felt dirty and bruised. Some of us crawled back into our caves resolving that stabbing ones-self repeatedly with a sharp object was more preferable.&lt;/p&gt;

&lt;p&gt;However, some people saw it as an opportunity.&lt;/p&gt;

&lt;p&gt;In 2007, the people that saw it as an opportunity have created Dojo, YUI, JQuery etc. So this time around we&#039;re ready for them, and it doesn&#039;t have to hurt. This time around it&#039;s a matter of waiting for Alex, John etc to have taken all the pain and revved the frameworks.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://directwebremoting.org/blog/joe/2007/12/17/browser_wars.html#comments</comments>
    <guid isPermaLink="true">http://directwebremoting.org/blog/joe/2007/12/17/browser_wars.html</guid>
    <pubDate>Mon, 17 Dec 2007 15:38:23 GMT</pubDate>
  </item>
  
  <item>
    <title>The Hardware of Tomorrow Versus the Platform of Tomorrow</title>
    <link>http://directwebremoting.org/blog/joe/2007/01/23/the_hardware_of_tomorrow_versus_the_platform_of_tomorrow.html</link>
    
      
        <description>
          &lt;p&gt;It seems to me that there is a problem. The OS/platform of tomorrow is not designed to make good use of the hardware of tomorrow.&lt;/p&gt;

&lt;h2&gt;The Hardware of Tomorrow&lt;/h2&gt;

&lt;p&gt;In 2003 the hardware race was about GHz, and the clock wars. AMD and Intel competed on their clock speed, and people checked off clock speed advances against &lt;a href=&#034;http://en.wikipedia.org/wiki/Moore&#039;s_law&#034;&gt;Moore&#039;s Law&lt;/a&gt;. In 2006 the battle lines began to be re-drawn around cores rather than clocks; Dual Core became the norm for new processors, and the next generations of chips from both AMD and Intel will be steadily increasing the number of cores. Intel and AMD have slightly different strategies, Intel is going for more generalized processing units, AMD (having bought ATI) are choosing to make their processing units &lt;a href=&#034;http://tomshardware.co.uk/2006/12/14/amd_questions_multi_core_trend/&#034;&gt;more specialized&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So the hardware of tomorrow is going to work best with software that encourages multi-threading. Java&#039;s memory model and util.concurrency make it technically strong, and &lt;a href=&#034;http://www.devwebsphere.com/devwebsphere/2007/01/the_future_of_f.html&#034;&gt;Billy Newport thinks&lt;/a&gt; that framework developers will need to alter their APIs to take advantage of the threads. He&#039;s probably right, but I suspect that to do a proper job, we&#039;re really going to need a language that builds multi-threading in at a lower level, leaving the compiler with the job of creating multiple execution paths. However that&#039;s not going to be quick.&lt;/p&gt;

&lt;div style=&#034;width:250px; float:right; border:1px solid #999; margin-left:10px; padding:10px;&#034; class=&#034;quote&#034;&gt;&lt;strong&gt;Cringley 2007 Prediction 5:&lt;/strong&gt;
&lt;br/&gt;AMD and Intel continue to beat the crap out of each other with customers gaining but wondering why there is no software that supports those new 8-way processors, as both compilers and third-party developers fail to keep up.&lt;/div&gt;

&lt;p&gt;Knowing this, Cringley&#039;s &lt;a href=&#034;http://www.pbs.org/cringely/pulpit/2007/pulpit_20070105_001440.html&#034;&gt;2007, prediction #5&lt;/a&gt;, is a bit of a no-brainer.&lt;/p&gt;

&lt;p&gt;Today, even just dual cores, one core spends a lot of time idle. Anyone spending any time waiting for javac to do it&#039;s work will be wishing it did a better job of using more than one processor. The &amp;quot;multi-threaded is hard&amp;quot; problem is one of the things killing the PS3 now. The PS3&#039;s cell processors seem to be too advanced for most of the games manufacturers right now.&lt;/p&gt;

&lt;p&gt;So if the hardware of tomorrow is going multi-threaded, what about the platform that developers use to write software?&lt;/p&gt;

&lt;h2&gt;The Platform of Tomorrow&lt;/h2&gt;

&lt;p&gt;I don&#039;t think we are in for any radical changes in platforms in the next few years. We&#039;ll continue to have a mix of Windows on the corporate desktop, Linux in the server room, and MacOS for developers, and arty types, and none of them being the primary development platform, which will continue to be the web.&lt;/p&gt;

&lt;p&gt;The web is the default place to develop new software these days. If you need raw speed, hardware access, 3D, off-line usage or top-quality OS integration, you&#039;ll use something else, but for everything else there&#039;s the web.&lt;/p&gt;

&lt;p&gt;The problem is that web-browsers are a step backwards as far as multi-threading goes. In Javascript there is no such thing as a new thread, and worse than that, the entire platform (i.e. a browser) runs a single JavaScript thread. If a script in one window goes into a tight loop, or runs some synchronous Ajax then the browser HTML display freezes.&lt;/p&gt;

&lt;p&gt;So are the any solutions?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding thread primitives to Javascript might technically possible, but it seems to me to be impractical; the single-threaded assumption is built fairly deeply into many applications.&lt;/li&gt;

&lt;li&gt;It might be possible for browser manufacturers to create a thread per domain. I don&#039;t see how this could cause problems, but I&#039;ll admit that I have a suspicion that I&#039;m overlooking something. If it does work then it might be possible to allow developers to create new threads by dynamically creating iframes in other domains and having some safe way to communicate between them.&lt;/li&gt;

&lt;li&gt;There is a Javascript pre-compiler called &lt;a href=&#034;http://neilmix.com/narrativejs/doc/&#034;&gt;Narrative JavaScript&lt;/a&gt; that looks like it might be of some use: it contains &lt;a href=&#034;http://neilmix.com/narrativejs/doc/reference.html&#034;&gt;a &lt;code&gt;spawn()&lt;/code&gt; method&lt;/a&gt; to start a new thread of execution. It&#039;s written in Javascript so you can deliver the pre-compiler to the browser or deliver the output. However until there is support for something like this at a language level that can exploit newer hardware, it doesn&#039;t solve the problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution that I&#039;d like to see is a language emerging that pushes the job of creating threads to the compiler, that runs on the JVM, and that is available in all browsers. I think I can safely predict that this is not going to happen any time soon though.&lt;/p&gt;

&lt;p&gt;So maybe the biggest challenge to Ajax is that compared to desktop applications they are going to look slower and slower as other platforms are quicker to embrace tomorrows hardware.&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://directwebremoting.org/blog/joe/2007/01/23/the_hardware_of_tomorrow_versus_the_platform_of_tomorrow.html#comments</comments>
    <guid isPermaLink="true">http://directwebremoting.org/blog/joe/2007/01/23/the_hardware_of_tomorrow_versus_the_platform_of_tomorrow.html</guid>
    <pubDate>Tue, 23 Jan 2007 20:48:33 GMT</pubDate>
  </item>
  
  </channel>
</rss>
