310 likes | 451 Views
World Wide Web Apps. CSE 308 Software Engineering. Why do some apps succeed?. A good idea solves customer pain the easy part Commitment time & energy the hard part A great team the harder part. Did someone say teams ? Round 2. LFM. LFG. How will we place software engineers?.
E N D
World Wide Web Apps CSE 308Software Engineering
Why do some apps succeed? • A good idea • solves customer pain • the easy part • Commitment • time & energy • the hard part • A great team • the harder part
How will we place software engineers? The 6 LFM Groups will: 1. Interview the candidates 2. Discuss hiring preferences 3. Email me their hiring preferences ranked 1-3 When? • at the end of class Then what? • I'll notify teams of assignments
We (i.e. the CS Faculty) want: • polished work • visible projects • positive team experiences • inspired presentations
Your Group Projects • I'll provide a Request for Proposal (RFP) • You'll write & submit your Proposal • Your Proposal should be for a Web App
What's an RFP again? • A document • Describes a problem • Offers grants/funding • Solicits Proposals • Best Proposal(s) get funded
What's a Proposal? • A document • describes team's accomplishments & assets • describes approach to solving problem • describes how funds will be used • selects PI • NSF Grant Proposal Guide: http://www.nsf.gov/publications/pub_summ.jsp?ods_key=gpg
Industry vs. Academia Successful Project In Industry -earns company $ -earns investors $ -pays employees -market visibility -significant market share -grows -hasn't filed for bankruptcy -exit strategy? Successful Project In Academia -earns University $ -earns inventor $ -pays research assistants -is published in journal -is patented/sold -launches new company -launches new industry -hasn't been canceled
So why a Web app? • Academia to Industry • i.e. good experience • Visibility • i.e. more potential users: • to test • to provide feedback • to use
Web users have high expectations Want apps that are: • fast • elegant • user friendly • dynamic • mobile • secure • social • cross-platform • solve customer pain
A brief history of the Internet 1969 ARPANET Launched 1960s AT&T Modem 1970s TCP/IP Proposed 1970s Compuserve ISP Launch 1970s Email Invented 1980s TCP/IP Fully Adopted 1980s WWW Proposed 1990s WWW Online 1990s Search Engine Invented 1990s JavaScript Invented 1990s Mosaic Invented 2000s Globalized Connections & Innovations 2000s The Computer Utility? 2000s Mobile Everything 2000s Social Everything
The Web from 10,000 feet • An amalgamation of tech • Held together by standards • WWW, URL, URI, HTML, XHTML, XML, HTTP, HTTPS, TCP, IP, UDP, FTP, MIME, IMAP, DNS, JavaScript, CDN, ICANN, IANA, RSA, ICMP, LAN, WAN, POP3, WEP, WPA, LARP, LAIRE
Web tech overview Front end • Gets user input, renders, talks to server • HTML, JavaScript, JavaScript libraries, plug-ins, etc. Back end • Talks to client, performs business logic, talks to DB • Java, PHP, C#, etc. Databases • Store permanent data • MySQL, Oracle, JavaDB, etc.
WWW Tech Generations Early 1990s 1St – Flat HTML files, images, etc. Mid 1990s 2nd – CGI, Perl, etc. Late 1990s 3rd – Application Servers, Java, C#, etc. Late 2000s 4th – The Cloud, CDNs GAE, AWS, etc.
What is JavaEE? • Java Enterprise Edition • Tools & APIs for eCommerce • Good News & Bad News
A brief history of JavaEE 1stGeneration – Servlets 2nd Generation – Java Server Pages 3rd Generation – Java Server Faces
What is a Java Web Application? • Runs on an application server • i.e. Glassfish, Tomcat, WebSphere • Generates interactive Web pages with: • markup code (i.e. XML, HTML) • dynamic code (i.e. JavaScript) • Look at WebJotto example app
What's a Web Form? • HTML component • Specify submit actions • route to action URL/method (i.e. servlet) • Ex:
What's a raw servlet? • A Java Program • Sits on a Java App Server • Starts upon first request • You may register listeners to respond to: • initialization, requests, destruction, etc. • Servlet responds via doGet or doPost public class MyServlet extends HttpServlet { public void doGet(...
Oversimplified Servlet Architecture Browser JavaEE Server HTML PAGE HttpServlet request Web Form doGet(... HTML PAGE response
doGet(HttpServletRequest req, HttpServletResponse resp) req has info about request use to get form data resp has output stream use to build response public void doPost( HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String firstName = req.getParameter("firstname"); String lastName = req.getParameter("lastname"); String email = req.getParameter("email"); … NOW DO SOMETHING WITH THIS INFO resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("<html>... ...
JSPs • Features: • HTML • templating (i.e. pre-built partial pages) • custom tags • scriptlets (i.e. code mixed inside JSP) • bad idea • JavaEE 5 • Use discouraged in JavaEE 6/7 • Replaced by JSF/Facelets • Still lots of servers out there using them
JSFs • Uses: • All templating • More & better Tag Libraries • EL • Ajax • Facelet-JavaBeans mappings • changes to mapped bean variables auto refresh on client • JSPs & JSFs: • processed on server to build page at time of request
Developing Backwards • What's that? • Find the deployment platform first • May not use the greatest and latest • Find your app a home before starting • Our home? • Appspot.com (more on this later)