More Related Content Similar to Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator (20) More from Jeff Haynie (20) Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator2. Jeff Haynie Co-founder & CEO [email_address] blog.jeffhaynie.us twitter.com/jhaynie linkedin.com/in/jhaynie 21. focus on the app (and ultimately, our business requirements) 33. March 31, 2005 (extended to March 2008 - better hurry up and replace) 106. client is for display (doesnโt that sound like the mainframe architecture?) 107. the way we built apps changed based on โthe webโ 116. massive new way of thinking about the web and apps (a lot was fueled by dot.com bubble) 135. java did change the way we built web sites (and it still continues today) 258. but lots of startups and innovative web companies thinking big 300. <html> <head> <title>Simple Ajax Login Example</title> <script language="Javascript"> function xmlhttpPost(strURL) { var xmlHttpReq = false; var self = this; // Mozilla/Safari if (window.XMLHttpRequest) { self.xmlHttpReq = new XMLHttpRequest(); } // IE else if (window.ActiveXObject) { self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } self.xmlHttpReq.open('POST', strURL, true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.onreadystatechange = function() { if (self.xmlHttpReq.readyState == 4) { updatepage(self.xmlHttpReq.responseText); } } self.xmlHttpReq.send(getquerystring()); } function getquerystring() { var form = document.forms['f1']; var username = form.username.value; var password = form.password.value; qstr = โusername=' + escape(username) + โ&password=โ + password; return qstr; } function updatepage(str){ document.getElementById("result").innerHTML = str; } </script> </head> <body> <form name="f1"> <p>username: </p> <input name=โusername" type="textโ/> <p>password: </p> <input name=โpassword" type="textโ/> <input value=โlogin" type="button" onclick='JavaScript:xmlhttpPost("/cgi-bin/simple-ajax-example.cgi")'></p> <div id="result"></div> </form> </body> </html> 345. <html> <head> <title>Hello World 2.0</title> <script src="javascripts/appcelerator.js" type="text/javascript"></script> </head> <body> <div on=โr:login.request then show or r:login.response then hideโ style=โdisplay:noneโ> <img src=โimages/indicator.gifโ /> processing loginโฆ </div> Username: <input type=โtext id=โusernameโ fieldset=โloginโ/> Password: <input type=โpassword id=โpassword fieldset=โloginโ/> <input type=โbuttonโ value=โloginโ fieldset=โloginโ on=โclick then r:login.requestโ /> </body> </html> 360. <!โ ExtJS Grid --> <app:ext_grid on="l:show.user.response then execute" property="rows" width="390" title=โUsersโ> <column property=โfirstโ >First Name</column> <column property=โlastโ>Last Name</column> <column property=โphoneโ>Phone</column> </app:ext_grid> <!โ Yahoo Calendar --> <app:calendar on="l:show.calendar then execute" title=โMy Calendar" inputId=โdateโ> </app:calendar> <input type=โtextโ id=โdateโ/> <img src=โimages/calendar.pngโ on=โclick then l:show.calendarโ/> 379. Rich Client Service r:login.request {โusernameโ:โjoeโ, โpasswordโ:โ****โ} r:login.response {โsuccessโ:true} 390. and we have them for Java, Ruby, PHP, .NET, Python and Perl 397. package org.appcelerator.service; import org.appcelerator.annotation.Service; import org.appcelerator.messaging.Message; public class MyService { @Service(request = โmy.request", response = โmy.response") protected void myRequest(Message request, Message response) throws Exception { // service logic here } } 403. it means you can place a native object or array of objects into the response 411. RIA + SOA โ thatโs good but what about prototyping? 422. no more 100-page requirements documents (that never matches the end application) 440. an entirely new and better way to build the next generation of web applications 441. help us build the best RIA+SOA open source developer community www.appcelerator.org