Upload
terrell-filbert
View
218
Download
2
Embed Size (px)
Citation preview
CSE 308Software Engineering
World Wide Web Apps
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?
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 Internet1960sAT&T
Modem
1969ARPANET Launched
1970sTCP/IP
Proposed
1980sTCP/IPFully
Adopted
1970sEmail
Invented
1980sWWW
Proposed
1990sWWWOnline
1990sMosaic
Invented
1970sCompuserv
eISP
Launch
1990sSearch Engine
Invented
1990sJavaScriptInvented
2000sGlobalizedConnectio
ns &Innovation
s
2000sMobile
Everything
2000sSocial
Everything
2000sThe
Computer Utility?
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
JavaEE Setup is much of the battle
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
HTML PAGE
Web Form
Browser JavaEE ServerHttpServlet
doGet(...
request
HTML PAGE
response
doGet(HttpServletRequest req, HttpServletResponse resp)
req
has info about request
use to get form data
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 INFOresp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html>......
resp
has output stream
use to build response
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
Poor form: JSPs with scriptlets
Better form: JSPs with JSTL
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
Better form: JSPs with JSTL
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)