Server-Side Web Programming: Java Copyright 2022 by Robert M. Dondero, Ph.D Princeton University 1
Objectives We will cover: – – – – – – Aside: Python lambda expressions Some advanced Java features Server-side web programming in Java, via Servlets The Spark web app framework The Velocity template engine 2
Motivation Question: Why study Java server-side web programming? Answer 1: Help you better understand server-side web programming Answer 2: Give you a sense of how Java is used in the “real world” 3
Motivation Question: Why study Java server-side web programming (cont.)? Answer 3: Show realistic use of some advanced features of Java Answer 4: Popular and important 4
Motivation Website Front End Back End Google.com JavaScript C, C , Go, Java, Python Facebook.com JavaScript Hack, PHP, Python, C , Java, Erlang, D, Xhp, Haskell YouTube.com JavaScript C, C , Java, Python, Go Yahoo JavaScript PHP Amazon.com JavaScript Java, C , Perl Wikipedia.org JavaScript PHP, Hack Twitter.com JavaScript C , Java, Scala, Ruby Bing JavaScript ASP.net eBay.com JavaScript Java, JavaScript, Scala MSN.com JavaScript ASP.net https://en.wikipedia.org/wiki/ Programming languages used in most popular websites 5
Motivation -- http://blog.stoneriverelearning.com/ t/ 6
Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 7
Python Lambda Expressions Alonzo Church 8
Python Lambda Expressions lambda param1, param2 : expression – – – – The keyword lambda (optionally) Parameters separated by commas A colon A single expression that uses the parameters 9
Python Lambda Expressions Without using a lambda expression: def mult(x, y): return x * y prod mult(5, 6) print(prod) # prints 30 Using a lambda expression: mult lambda x, y: x * y prod mult(5, 6) print(prod) # prints 30 Using a lambda expression: print( (lambda x, y: x * y)(5, 6) ) # prints 30 10
Python Lambda Expressions Without lambda expression: def compare lengths(word1, word2): return len(word1)–len(word2) words.sort(compare lengths) With lambda expression: words.sort( lambda word1,word2: len(word1)–len(word2) ) 11
Python Lambda Expressions Recall eventtest2.py 12
Python Lambda Expressions See eventtestbad.py – Fails miserably 13
Python Lambda Expressions See eventtestlambda.py – Works! 14
Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 15
Advanced Java: Lambda Exprs Java lambda expressions – – New to Java SE 8 Examples 16
Advanced Java: Lambda Exprs Without lambda expression: class LengthComparator implements Comparator String { public int compare(String word1, String word2) { return word1.length() – word2.length(); } } . String[] words; . Arrays.sort(words, new LengthComparator()); . 17
Advanced Java: Lambda Exprs With lambda expression: . String[] words; . Arrays.sort(words, (String word1, String word2) - word1.length() – word2.length() ); . Sometimes can omit param types: . String[] words; . Arrays.sort(words, (word1, word2) - word1.length() – word2.length() ); . 18
Advanced Java: Lambda Exprs Functional interface – An interface that declares a single method Can use a lambda expression in lieu of an object of a class that implements a functional interface 19
Advanced Java: Lambda Exprs Java lambda expression observations – – – Function pointers in a language that doesn’t have functions! Handy! Inelegant? 20
Advanced Java: Packages Packages – – Package: a named group of classes (and other packages) A package is stored in a directory 21
Advanced Java: Packages Using a package java.lang.Math.sqrt(x); import java.lang.Math; Math.sqrt(x); 22
Advanced Java: Packages Defining a package // Book.java package edu.princeton.penny; // All names defined subsequently are // in the edu.princeton.penny package. class Book{ } Defines class edu.princeton.penny.Book Book.java must be in edu/princeton/penny directory 23
Advanced Java: Maven Maven – Java build tool – C : make Java : Maven Java package management tool Python: pip & PyPi Java: Maven & Maven central repo 24
Advanced Java: Maven Maven Central Repo Maven Local Repo ( /.m2) .jar files Java App 1 pom .xml Maven .jar files Java App 2 pom .xml 25
Agenda Aside: Python lambda expressions Some advanced Java features Servlet Programming The Spark Web Application Framework The Velocity Template Engine 26
Servlet Programming Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 27
Servlet Programming Answer 1: Use CGI – – Possible, but Very slow 28
Servlet Programming Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 29
Servlet Programming Servlets – “A servlet is a Java technology-based Web component, managed by a container, that generates dynamic content.” Servlet specification at: http://download.oracle.com/./servlet-3 0-final-spe c.pdf 30
Servlet Programming Servlet Container Browser HTTP Server Servlet1 Servlet3 Servlet2 Servlet4 Your app Popular servlet containers: Apache Tomcat Eclipse Jetty 31
Servlet Programming Tomcat or Jetty Browser Servlet1 Servlet3 Servlet2 Servlet4 Your app Tomcat or Jetty can be both servlet container and HTTP server We’ll use that configuration We’ll use Jetty 32
Servlet Programming Python: – WSGI specification connects HTTP server and your Python app Java: – Servlet specification connects HTTP server and your Java app 33
Servlet Programming See PennyServlets app mvn clean mvn compile ./runserver 55555 34
Servlet Programming See PennyServlets app (cont.) 35
Servlet Programming See PennyServlets app (cont.) 36
Servlet Programming See PennyServlets app (cont.) 37
Servlet Programming See PennyServlets app (cont.) 38
Servlet Programming See PennyServlets app (cont.) – – – – – – – – – penny.sql, penny.sqlite Book.java, Database.java Common.java, Util.java IndexServlet.java SearchFormServlet.java SearchResultsServlet.java Penny.java pom.xml runserver 39
Servlet Programming PennyServlets pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java IndexServlet.java Penny.java SearchFormServlet.java SearchResultsServlet.java Util.java resources penny.sql penny.sqlite 40
Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 41
Spark Question: How does one do web programming in Java? Answer 1: Use CGI Answer 2: Use Servlets Answer 3: Use a Java web app framework 42
Spark Per Wendel 43
Spark Why study Spark? – – (Instead of some other framework) Easy to learn Simple Good documentation and tutorial Integrated with Jetty container/server 44
Spark See PennySpark app mvn clean mvn compile ./runserver 55555 All pages identical to those of PennyServets app 45
Spark See PennySpark app (cont.) – – – – – – penny.sql, penny.sqlite Book.java, Database.java Common.java Penny.java pom.xml runserver 46
Spark PennySpark pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java Penny.java resources penny.sql penny.sqlite 47
Agenda Aside: Python lambda expressions Some advanced Java features Servlet programming The Spark Web application framework The Velocity template engine 48
Velocity Problem: – PennySpark app builds HTML code strings incrementally Solution: – – Templates The Apache Velocity template engine 49
Velocity See PennySparkVelocity app mvn clean mvn compile ./runserver 55555 All pages identical to those of PennySpark app 50
Velocity See PennySparkVelocity app – – – – – – penny.sql, penny.sqlite Book.java, Database.java header.vtl, footer.vtl, index.vtl, index.vtl, searchform.vtl, searchresults.vtl Penny.java pom.xml runserver 51
Velocity PennySparkVelocity pom.xml runserver src main java edu princeton penny Book.java Common.java Database.java Penny.java resources penny.sql penny.sqlite header.vtl footer.vtl index.vtl searchform.vtl searchresults.vtl 52
Velocity Note the MVC architecture – – – Model: data access code View: data presentation code Controller: business code 53
Velocity Python/Flask/Jinja2 – – Encourages separation of concerns But templates can contain Python-like code Java/Spark/Velocity – – More strongly encourages separation of concerns Templates cannot contain embedded Java code! 54
More Spark and Velocity! There is much more to Spark and Velocity Spark website: – Velocity website: – http://sparkjava.com/ http://velocity.apache.org/engine/1.7/vtl-referenc e.html Don’t confuse Spark (sometimes called SparkJava) with Apache Spark (an open-source cluster-computing framework) 55
Commentary Small Apps Python/Flask/Jinja2 Java/Spark/Velocity Large Apps 56
Summary We have covered: – – – – – – Aside: Python lambda expressions Some advanced Java features Server-side web programming in Java, via Servlets The Spark web app framework The Velocity template engine 57
- The Spark web app framework . Yahoo JavaScript PHP Amazon.com JavaScript Java, C , Perl Wikipedia.org JavaScript PHP, Hack Twitter.com JavaScript C , Java, Scala, Ruby Bing JavaScript ASP.net eBay.com JavaScript Java, JavaScript, Scala . Note the MVC architecture
java.io Input and output java.lang Language support java.math Arbitrary-precision numbers java.net Networking java.nio "New" (memory-mapped) I/O java.rmi Remote method invocations java.security Security support java.sql Database support java.text Internationalized formatting of text and numbers java.time Dates, time, duration, time zones, etc.
Java Version Java FAQs 2. Java Version 2.1 Used Java Version This is how you find your Java version: Start the Control Panel Java General About. 2.2 Checking Java Version Check Java version on https://www.java.com/de/download/installed.jsp. 2.3 Switching on Java Console Start Control Panel Java Advanced. The following window appears:
Pemrograman Web dengan PHP dan MySQL Achmad Solichin (achmatim@gmail.com) 7 Bab 1 Pengenalan Web Server dan Server Side Scripting Pengenalan Web Server Instalasi dan Konfigurasi Web Server Instalasi dan Konfigurasi PHP Testing Web Server dan PHP Web Server Web Server merupakan sebuah perangk
Java Tutorial Java Tutorial or Core Java Tutorial or Java Programming Tutorial is a widely . An application that runs on the server side and creates dynamic page, is called web application. Currently, servlet, jsp, struts, jsf etc. technologies are used for creating web applications in java. 2/20/17 09:58:44 AM 11 .
JAR Javadoc Java Language jar Security Others Toolkits: FX Java 2D Sound . Java Programming -Week 1. 6/25. Outline Java is. Let’s get started! The JDK The Java Sandbox . into your namespace. java.lang contains the most basic classes in the Java language. It is imported automatically, so
The Java Platform The Java platform has two components: The Java Virtual Machine (Java VM) The Java Application Programming Interface(Java API) The Java API is a large collection of ready-made software components that provide many useful capa
–‘java’ command launches Java runtime with Java bytecode An interpreter executes a program by processing each Java bytecode A just-in-time compiler generates native instructions for a target machine from Java bytecode of a hotspot method 9 Easy and High Performance GPU Programming for Java Programmers Java program (.
Server Side Scripting merupakan sebuah teknologi scripting atau pemrograman web dimana script (program) dikompilasi atau diterjemahkan di server. Dengan server side scripting, memungkinkan untuk menghasilkan halaman web yang dinamis. Beberapa contoh Server Side Scripting (Programming) : 1. ASP (Active Server Page) dan ASP.NET 2.