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