610 likes | 736 Views
Java 簡介. 什麼是 Java. 1990 年 12 月昇陽公司 (Sun) Green Team 小組,發展出 Oak 語言 Oak( 橡樹 ) 已被註冊使用,故改名為 Java 1995 年 Sun 正式推出 Java 語言 是一種高階的程式語言 Java 程式碼不會因執行環境的改變而重新改寫或重新編譯 Write once, run anywhere 跨平台. 跨平台. ….. …… ….. …. compiler. Interpreter. Bytecode. This is a test …. ACCDEBCC ….
E N D
什麼是 Java • 1990年12月昇陽公司(Sun) Green Team小組,發展出Oak語言 • Oak(橡樹) 已被註冊使用,故改名為Java • 1995年Sun正式推出Java語言 • 是一種高階的程式語言 • Java程式碼不會因執行環境的改變而重新改寫或重新編譯 Write once, run anywhere • 跨平台
跨平台 ….. …… ….. …..
compiler Interpreter Bytecode This is a test … ACCDEBCC… Java • Compiler: 編譯 • 將程式原始碼轉換成位元碼(bytecode) • 利用此中間格式便於在其他平台執行 10101110100.. Interpreter: 解譯 • Java虛擬機器(Java Virtual Machine) • 載入位元碼並轉換成該平台可以執行的程式碼
Java • Compiler: 編譯 • Interpreter: 解譯 Source Code Bytecode
JVM compiler JVM Bytecode JVM ACCDEBCC… JVM JVM JVM JVM Java: 跨平台 ….. …… ….. …..
安裝 Java Development Kit (JDK) • 第一個版本: JDK 1.0a2版本 • Java 2 SDK • Java的版本 • J2SE (Standard Edition) • 開發工具 (SDK, Development Tools) • 執行環境 JRE (Java Runtime Environment) • Web執行環境 (Java Plug-in) • J2EE (Enterprise Edition) • 開發商業或伺服器應用程式的套件 • J2ME (Micro Edition) • 開發行動電話/無線通訊的套件
安裝 Java Development Kit (JDK) • 從 java.sun.com 下載 • 安裝 • 設定環境變數
Java “Hello world” • public class hello{ publicstatic void main (String[] argv){ System.out.println("Hello world.."); } } • hello.java為檔名儲存 • javac hello.java (編譯程式) hello.class • java hello (執行程式)
WWW基本觀念 - WWW的誕生 • WWW World Wide Web,全球資訊網,簡稱3W • 發源地:歐洲量子物理實驗室 • 發展目的:透過網路呈現文字、聲音、影像、圖形的分散式多媒體資訊系統 • 不受瀏覽者所使用電腦系統種類的限制,達到跨平台共享資訊的目的。
我要瀏覽A網頁 給你A網頁 WWW基本觀念 - WWW的架構 • WWW的架構,分為 • 伺服端(Server,或稱遠端),資訊提供者 • 客戶端(Client,或稱近端),資訊的接收者 客戶端 伺服端
■ 靜態網頁 (客戶端Script) URL Internet 伺服器 HTML URL的全文為Uniform Resource Locator,譯為統一資源定位器。 指定欲取得Internet上資源的位置與方式 http://tw.yahoo.com/index.html
WWW基本觀念 - HTML語言 • 網頁(.htm檔)最基礎技術為HTML語法 • HyperText Makeup Language,譯為超文件標記語言 • HTML描述超文件中資料的呈現方式 • 文字的顏色、大小,標示資料的種類為圖檔或者聲音等。 • 利用一個個的HTML標籤,將欲進行格式控制的資料包夾起來。 • <B></B>標籤,控制『hello world』,以粗體字的方式顯示在瀏覽器內。 <B>hello world</B>
HTML • <HTML> • <Title> 第一個Html程式 </Title> • <Body> • This is a test…… • <B>hello word</B><br> • </Body> • </HTML>
下載網頁至客戶端 經瀏覽器執行程式 將網頁顯示 在瀏覽器中 ■ 靜態網頁 (客戶端Script)- 執行於客戶端的網頁程式語言 程 式 伺服端 客戶端
網站程式的發展 靜態HTML網頁 動態HTML網頁
■ 動態網頁 (客戶端Script) URL 伺服器 JavaScript VBScript Java Applet 動畫、日期顯示、遊戲 JavaScript Netscape 1995 VBScript Microsoft
JavaScript • <html> • <body> • <!-------JavaScript收集區 每日一語_開始--------> • <script language="JavaScript"> • <!-- • tips = new Array(4); • tips[0] = "相信明天一定比今天好"; • tips[1] = "相信努力以赴必有收穫"; • tips[2] = "相信面對難關決不低頭"; • tips[3] = "相信風調雨順國泰民安"; • index = Math.floor(Math.random() * tips.length); • document.write("<CENTER><P><FONT SIZE=2 COLOR=DARKBLUE>" + tips[index] + "</CENTER></FONT></P>"); • // --> • </script> • <!-------JavaScript收集區 每日一語_結束--------> • </body> • </html>
下載網頁至客戶端 經瀏覽器執行程式 將網頁顯示 在瀏覽器中 執行於客戶端的網頁程式語言 JavaScript 程式 程 式 伺服端 客戶端
Java “Hello world” • public class hello{ publicstatic void main (String[] argv){ System.out.println("Hello world.."); } } • hello.java為檔名儲存 • javac hello.java (編譯程式) hello.class • java hello (執行程式)
將網頁顯示 在瀏覽器中 Java Applet URL • <html> <body> • <!-------JavaScript收集區 Menu Bar_開始--------> • <applet code=" hello.class" width="360" height="20"> • </applet> • <!-------JavaScript收集區 Menu Bar_結束--------> • </body></html> 伺服器 .class .html
■ 何謂稿(Script)語言 • 稿語言就是需要附加在網頁中才能執行的語言.也就是無法單獨執行. • 稿語言分為兩大類 • 客戶端稿語言 (JavaScript, Java Applet) • 伺服器端稿語言 (ASP, PHP, JSP) • 採用直譯(interpreter)方式執行,不同的稿語言需要不同的Script引擎來編譯.如:JavaScript在IE有Jscript引擎,VBScript就需要VBScript的引擎等等.
缺點:伺服器端無法與客戶端網頁互動 ■ JavaScript與Java的比較 • JavaScript與Java語言的共通點為語法類似 • 差異點如下:
網站程式的發展 靜態HTML網頁 動態HTML網頁 動態CGI程式
submit ■ CGI程式的運作 (伺服器端Script) 行程越多,速度越慢 C G I HTTP Request CGI程式 HTTP Response
網站程式的發展 靜態HTML網頁 動態HTML網頁 動態CGI程式 伺服器稿語言
■ 伺服器稿語言的運作 伺服器端 2.網站伺服器找到該網頁 3.網站伺服器的編譯器將稿語言編譯轉成HTML 4.連同產生出來的網頁與客戶端稿語言傳回 5..瀏覽器執行客戶端稿語言後將網頁顯示出來 1.客戶端對伺服器Request讀取某個網頁 客戶端
■ 微軟的稿語言Active Server Page • <html> • <head><title>ASP程式範例</title></head> • <body> • <% • Response.Write “ Hello! World!<br>” • Response.Write “Welcome !! Your arrival time is “ & Now • %> • </body> • </html>
■ 昇陽的Java Server Page (JSP) • <%@page contentType=“text/html” import=“java.util.*” %> • <html> • <head><title>JSP程式碼</title></head> • <% • out.write(“Hello World!”); • Date current = new Date(); • out.write(“Welcome !! Your arrival time is “ + current + “<br>”); • %> • <body> • </body> • </html>
■ 伺服器稿語言的運作 伺服器端 {將.jsp網頁轉成 java servlet網頁 } 將 java servlet 網頁轉成HTML 傳回HTML 瀏覽器執行客戶端稿語言後將網頁顯示出來 讀取 .jsp 檔案 客戶端
■ 伺服器稿語言的運作 伺服器端 {將.jsp網頁轉成 java servlet網頁 } 將 java servlet 網頁轉成HTML 傳回HTML 瀏覽器執行客戶端稿語言後將網頁顯示出來 讀取 .jsp 檔案 客戶端
■ JSP與Java Servlet的轉換 • 原始Java程式: • <%@page contentType=“text/html” import=“java.util.*” %> • <html> • <head><title>JSP程式碼</title></head> • <% • out.write(“Hello World!”); • Date current = new Date(); • out.write(“Welcome !! Your arrival time is “ + current + “<br>”); • %> • <body> • </body> • </html>
■ JSP與Java Servlet的轉換I • 轉換後的Servlet程式: • package org.apache.jsp; • import java.util.*; • import javax.servlet.*; • import javax.servlet.http.*; • import javax.servlet.jsp.*; • import org.apache.jasper.runtime.*; • public class example1$jsp extends HttpJspBase { • static { • } • public example1$jsp( ) { • } • private static boolean _jspx_inited = false; • public final void _jspx_init() throws org.apache.jasper.runtime.JspException { • }
■ JSP與Java Servlet的轉換II • public void _jspService(HttpServletRequest request, HttpServletResponse response) • throws java.io.IOException, ServletException { • JspFactory _jspxFactory = null; • PageContext pageContext = null; • HttpSession session = null; • ServletContext application = null; • ServletConfig config = null; • JspWriter out = null; • Object page = this; • String _value = null; • try { • if (_jspx_inited == false) { • synchronized (this) { • if (_jspx_inited == false) { • _jspx_init(); • _jspx_inited = true; • }
■ JSP與Java Servlet的轉換III • } • } • _jspxFactory = JspFactory.getDefaultFactory(); • response.setContentType("text/html"); • pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); • application = pageContext.getServletContext(); • config = pageContext.getServletConfig(); • session = pageContext.getSession(); • out = pageContext.getOut(); • // HTML // begin [file="/example1.jsp";from=(0,55);to=(3,0)] • out.write("\r\n<html>\r\n<head><title>JSP繕{礎癒翻X</title></head>\r\n"); • // end • // begin [file="/example1.jsp";from=(3,2);to=(7,0)] • out.write("Hello World!");
■ JSP與Java Servlet的轉換IV • Date current = new Date(); • out.write("Welcome !! Your arrival time is " + current + "<br>"); • // end • // HTML // begin [file="/example1.jsp";from=(7,2);to=(11,0)] • out.write("\r\n<body>\r\n</body>\r\n</html>\r\n"); • // end • } catch (Throwable t) { • if (out != null && out.getBufferSize() != 0) • out.clearBuffer(); • if (pageContext != null) pageContext.handlePageException(t); • } finally { • if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); • } • } • }
1-2 JSP的運作原理 1-2-1 JSP與JavaServlet的關係 • JSP的容器會將JSP轉譯成JavaServlet然後再透過Java虛擬機器(Java Virtual Machine,JVM)來執行. • Java語言的一個特色就是所謂的中介碼Bytecode(.class檔名)可以提高可攜性.即是先將程式編譯成一個精簡的語言然後再交給JVM進行直譯. • 因此第一次執行JSP檔案要花比較多的時間.(一般測試的時候就會至少執行一次).後面直接執行bytecode效率很高.
網 站 伺 服 器 Servlet引擎 JSP引擎 ■JSP,Java與JavaServlet的關係 HTML網頁 編譯過的Servlet JSP網頁 客戶端 伺服器端 網站應用伺服器
■ 伺服器稿語言的運作 伺服器端 {將.jsp網頁轉成 java servlet網頁 } 將 java servlet 網頁轉成HTML 傳回HTML 瀏覽器執行客戶端稿語言後將網頁顯示出來 • Resin • Tomcat 讀取 .jsp 檔案 客戶端
■ JSP容器 • JSP常用的容器有: • Resin:為Caucho Technology所開發出來的商業軟體,非商業用途用途免費.商用版本要收費,須搭配Windows的IIS或PWS的環境下才能作業.因此在啟動Resin前須先啟動IIS或是PWS. • Tomcat:為Apache所開出來的免費軟體同時也開放原始碼,為一個開放式的軟體. 目前採用Tomcat為開發環境的JSP網站較多.
2-2-2 Tomcat的下載與安裝 • 可前往Tomcat的官方網站去下載最新版Tomcat(6.0.18版) http://jakarta.apache.org/tomcat/index.html