Java是一門用來開發(fā)軟件的計算機語言,如同漢語是在中國進行交流你的語言,西班牙語是在西班牙交流的語言,編程自然適合計算機溝通,就需要使用計算機認識的語言,那么Java就是其中一個,接下來會依次介紹:
- 軟件開發(fā)介紹
- 常見的編程語言
- Java語言的特點
- Java運行機制
軟件開發(fā)
軟硬件介紹
- 硬件:一般是計算機硬件的簡稱,是指計算機系統(tǒng)中由電子,機械和光電元件等組成的各種物理裝置的總稱。這些物理裝置按系統(tǒng)結(jié)構(gòu)的要求構(gòu)成一個有機整體為計算機軟件運行提供物質(zhì)基礎(chǔ),比如主板,硬盤,內(nèi)存條,電源,顯卡等能摸得著的東西都是硬件
- 軟件:是一系列按照特定順序組織的計算機數(shù)據(jù)和指令的集合。一般來講軟件被劃分為系統(tǒng)軟件、應(yīng)用軟件,軟件并不只是包括可以在計算機(這里的計算機是指廣義的計算機)上運行的電腦程序,與這些電腦程序相關(guān)的文檔一般也被認為是軟件的一部分
- windows操作系統(tǒng),ios操作系統(tǒng)等都屬于系統(tǒng)級別軟件,提供了直接通過圖形頁面操作計算機的功能
- 微信、QQ、釘釘這些屬于應(yīng)用軟件,可以幫助我們完成一些日常,工作需求
軟件開發(fā)
軟件開發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項包括需求捕捉、需求分析、設(shè)計、實現(xiàn)和測試的系統(tǒng)工程。軟件一般是用某種程序設(shè)計語言來實現(xiàn)的。通常采用軟件開發(fā)工具可以進行開發(fā)。
1. 程序員主要完成的是實現(xiàn)這個步驟,當(dāng)然自己寫的代碼也要自己測試一下才可以提交哦!
2. 需求捕捉:就是獲取需求,我們要做什么,這是軟件開發(fā)的第一步,一般由老板、客戶或者產(chǎn)品經(jīng)理負責(zé)
3. 需求分析:經(jīng)過深入細致的調(diào)研和分析,準(zhǔn)確理解用戶和項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須做什么
4. 設(shè)計:根據(jù)需求分析階段確定的功能設(shè)計軟件系統(tǒng)的整體結(jié)構(gòu)、劃分功能模塊、確定每個模塊的實現(xiàn)方法,形成軟件的具體設(shè)計方案,這步驟一般UI設(shè)計師會參與進來,協(xié)助完成軟件原型或者操作界面的設(shè)計
5. 測試:在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件質(zhì)量,并對其是否能滿足設(shè)計要求進行評估,現(xiàn)在軟件的規(guī)模越來越大,功能越來越復(fù)雜,企業(yè)在陸陸續(xù)續(xù)配備專業(yè)的測試人員
人機交互方式
正常人類與計算機交互,也就是操作者對電腦發(fā)出一個命令之后計算機給操作者的反饋,操作者再根據(jù)反饋發(fā)出命令的這么一個循環(huán)過程。
按照目前科技普及程度,人機交互的方式有兩類,【圖形化界面】和【命令行方式】,下方將會介紹兩者概念區(qū)別,并且同時以打開windows文件系統(tǒng)為例實際演示。
圖形化界面(Graphical User Interface GUI)
這種方式簡單直觀,操作者易于接受,容易上手操作。我們現(xiàn)在使用的大部分軟件都是圖形化界面的,我們通過點擊對應(yīng)的圖標(biāo)、文字,通過滑動頁面、長按等操作實現(xiàn)對軟件的操作。
命令行方式(Command Line Interface CLI)
需要有一個控制臺,輸入特定的指令,讓計算機完成一些操作。較為麻煩,上手也比較困難,需要記錄住一些命令。比如windows系統(tǒng)可以輸入cmd來開啟控制臺。
總結(jié)
- 無論是哪種方式目的都是和計算機進行對話,命令方式更加直接,圖形頁面方式更加方便
- 圖形頁面其實是對命令的封裝,配上美觀的圖標(biāo)和合理的頁面設(shè)計,方便用戶使用
- 對于軟件的使用者來說我們當(dāng)然要提供圖形頁面,以降低使用難度,對于程序員來說工作過程中還要使用很多軟件命令行操作方式需要我們了解和掌握,當(dāng)然不是所有的,只是一些必須的會用就行了,忘記了也可以百度一下
常用DOS命令
下方列出一些windows系統(tǒng)中常用的命令,也稱為【DOS命令】
dir : 列出當(dāng)前目錄下的文件以及文件夾md : 創(chuàng)建目錄rd : 刪除目錄cd : 進入指定目錄cd.. : 退回到上一級目錄cd: 退回到根目錄del : 刪除文件exit : 退出 dos 命令行
常用快捷鍵
← →:移動光標(biāo) ↑ ↓:調(diào)閱歷史操作命令 Delete和Backspace:刪除字符
常見的編程語言
C: 許多計算機科學(xué)家表示,學(xué)習(xí)C可以教初學(xué)者了解計算機程序的真正原理,還有一些人認為,它應(yīng)該是計算機開始學(xué)習(xí)編程的人學(xué)會的頭一種語言。主要用于嵌入式系統(tǒng)的應(yīng)用程序。
C :是C語言的增強,主要用于開發(fā)系統(tǒng)軟件,應(yīng)用軟件,設(shè)備驅(qū)動程序,嵌入式軟件,高性能服務(wù)器和客戶端應(yīng)用及娛樂軟件。
Java:說它是至今最流行的編程語言也不足為過,其可以用于各種各樣的領(lǐng)域,包括企業(yè)應(yīng)用及基礎(chǔ)設(shè)施,以及Web應(yīng)用和移動開發(fā)。
JavaScript:在Web應(yīng)用上有著非常大的需求,主要目的是為了解決服務(wù)器端語言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。JavaScript主要用于實現(xiàn)為Web瀏覽器,以提供增強的用戶界面和動態(tài)網(wǎng)站。
C#:是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\行于.NET Framework之上的高級程序設(shè)計語言。借鑒了Java,C,C 和Delphi的一些特點,如今C#已經(jīng)成為微軟應(yīng)用商店和開發(fā)成員非常歡迎的開發(fā)語言。
PHP:是一種通用開源腳本語言,特別適合于Web開發(fā),可嵌入到HTML中,它最初是用來設(shè)計動態(tài)網(wǎng)頁產(chǎn)生的。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易于學(xué)習(xí),使用廣泛。
Python:是應(yīng)用于設(shè)計各種各樣的應(yīng)用程序的動態(tài)語言, 往往比Tcl,Perl,Ruby,Scheme和Java更容易編寫。Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言制作的各種模塊(尤其是C/C )輕松地聯(lián)結(jié)在一起。
Ruby:是一種動態(tài)的,側(cè)重于簡單個高效的開源語言,他是一個優(yōu)雅的語法,能夠很自然的閱讀和編寫,適合于快速開發(fā),一般開發(fā)效率是JAVA的5倍。
Objective-C:對于鐘情于Apple設(shè)備的網(wǎng)友來說,Objective-C的流行就得益于蘋果的成功,其是增加了Smalltalk風(fēng)格的消息在C編程語言中的反射,面向?qū)ο蟮恼Z言。主要使用于蘋果系統(tǒng)和GNUstep這兩個使用OpenStep的標(biāo)準(zhǔn)的系統(tǒng)。隨著蘋果平臺的巨大人氣,如今Objective-C語言被人們逐漸知道。
HTML5:是用于構(gòu)建因特網(wǎng)的核心技術(shù)的標(biāo)準(zhǔn)語言,用于Web呈現(xiàn)內(nèi)容,它是HTML標(biāo)準(zhǔn)的第五次修訂,如今,HTML5繼續(xù)在移動開發(fā)領(lǐng)域發(fā)揮著重要的作用,為互聯(lián)網(wǎng)的發(fā)展提供了多樣化的發(fā)展道路,37%的開發(fā)者依賴HTML5開發(fā)移動網(wǎng)站和Web應(yīng)用程序 。
CSS:是一種用來表現(xiàn)HTML或XML等文件樣式的計算機語言。最常用于Web樣式和HTML和Xhtml接口,該語言可以應(yīng)用與任何類型的XML文檔, CSS的設(shè)計主要是為了使文檔內(nèi)容從文檔表示的分離,包括元素,如布局、顏色和字體。
Java語言介紹
Java語言是SUN(Stanford University Network,斯坦福大學(xué)網(wǎng)絡(luò)公司 ) 在1995年推出的一 門高級編程語言。是一種面向Internet的編程語言。Java一開始富有吸引力是因為Java程序可以 在Web瀏覽器中運行。這些Java程序被稱為Java小程序(applet)。applet使用現(xiàn)代的圖形用戶界面與Web用戶進行交互。 applet內(nèi)嵌在HTML代碼中。 隨著Java技術(shù)在web方面的不斷成熟,已經(jīng)成為Web應(yīng)用程序的首選開發(fā)語言。
Java語言技術(shù)結(jié)構(gòu)
技術(shù)結(jié)構(gòu) | 主要用途 |
Java SE(Java Standard Edition)標(biāo)準(zhǔn)版 | 支持面向桌面級應(yīng)用(如Windows下的應(yīng)用程序)的Java平臺,提供了完整的Java核 心API,此版本以前稱為J2SE |
Java EE(Java Enterprise Edition)企業(yè)版 | 是為開發(fā)企業(yè)環(huán)境下的應(yīng)用程序提供的一套解決方案。該技術(shù)體系中包含的技術(shù)如:Servlet 、Jsp等,主要針對于Web應(yīng)用程序開發(fā)。版本以前稱為J2EE |
Java ME(Java Micro Edition)小型版 | 支持Java程序運行在移動終端(手機、PDA)上的平臺,對Java API有所精簡,并加 入了針對移動終端的支持,此版本以前稱為J2ME |
Java Card | 支持一些Java小程序(Applets)運行在小內(nèi)存設(shè)備(如智能卡)上的平臺 |
Java語言主要應(yīng)用
從Java的應(yīng)用領(lǐng)域來分,Java語言的應(yīng)用方向主要表現(xiàn)在以下幾個方面
- 企業(yè)級應(yīng)用:主要指復(fù)雜的大企業(yè)的軟件系統(tǒng)、各種類型的網(wǎng)站。Java的安全機制以及 它的跨平臺的優(yōu)勢,使它在分布式系統(tǒng)領(lǐng)域開發(fā)中有廣泛應(yīng)用。應(yīng)用領(lǐng)域包括金融、電 信、交通、電子商務(wù)等
- Android平臺應(yīng)用:Android應(yīng)用程序使用Java語言編寫。Android開發(fā)水平的高低 很大程度上取決于Java語言核心能力是否扎實
- 大數(shù)據(jù)平臺開發(fā):各類框架有Hadoop,spark,storm,flink等,就這類技術(shù)生態(tài) 圈來講,還有各種中間件如flume,kafka,sqoop等等 ,這些框架以及工具大多數(shù) 是用Java編寫而成,但提供諸如Java,scala,Python,R等各種語言API供編程
- 移動領(lǐng)域應(yīng)用:主要表現(xiàn)在消費和嵌入式領(lǐng)域,是指在各種小型設(shè)備上的應(yīng)用,包括手 機、PDA、機頂盒、汽車通信設(shè)備等
目前基本從事兩個階段,首先是企業(yè)級應(yīng)用方向,成為一名后端開發(fā)工程師,然后向大數(shù)據(jù)方向靠攏,安卓和移動領(lǐng)域不適合大部分人,特殊機遇除外
Java主要特性
- Java語言簡單易學(xué):Java語言的語法與C語言和C 語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java
- Java語言面向?qū)ο螅?/span>Java語言提供類、接口和繼承等原語,為了簡單起見, 只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制(關(guān)鍵字為implements)
- Java跨平臺性:通過Java的虛擬機,JVM可以實現(xiàn)一次編寫到處運行的效果
- Java語言分布式:Java語言支持Internet應(yīng)用的開發(fā),在基本的Java應(yīng)用編 程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類 庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程 方法激活)機制也是開發(fā)分布式應(yīng)用的重要手段
- Java語言的健壯性。Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇
- Java語言的安全性。Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊如:安全防范機制(類ClassLoader),如分配不同的 名字空間以防替代本地的同名類、字節(jié)代碼檢查
- Java語言對系統(tǒng)無侵入性:Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實現(xiàn)這個 Java平臺的任何系統(tǒng)中運行
- Java語言是解釋型語言:如前所述,Java程序在Java平臺上被編譯為字節(jié)碼格式,然后可以在實現(xiàn)這個Java平臺的任何系統(tǒng)的解釋器中運行
- Java是的高性能:與那些解釋型的高級腳本語言相比,Java的性能還是較優(yōu)的,配合一些其他中間件可以發(fā)揮更強的性能
- Java語言原生支持多線程。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建。多線程可以有效提升系統(tǒng)的響應(yīng)速度
Java的跨平臺性
不同的平臺對程序的解讀是不一致的,在需要運行 Java 應(yīng)用程序的操作系統(tǒng)平臺上,先安裝一個Java虛擬機 (JVM Java Virtual Machine) 。由JVM來負責(zé)Java程序在該系統(tǒng)中的運行。如果安裝了JDK則自帶安裝好JVM。所以在不同的平臺上安裝對應(yīng)的JVM,Java程序和平臺之間有一個JVM當(dāng)做翻譯員,實現(xiàn)跨平臺性。
比如,你對一個中國人說“你好”,他明白是在問候,會給出正確的反饋,如果對一個美國人說“你好”,他就是一個問號了。JVM可以理解成翻譯員就行啦,和美國人交流需要懂英語的翻譯員,和韓國人交流需要懂韓語的翻譯員。
Linux上的JVM就比較懂Linux,Windows的JVM就比較懂Windows,那么,你懂了嗎?
Java運行機制
Java的運行機制主要分為兩個核心:
- Java虛擬機 (Java Virtal Machine),簡稱JVM
- 垃圾收集機制 (Garbage Collection),簡稱GC
程序啟動之后會運行在JVM中,在運行的過程中會產(chǎn)生垃圾,這個垃圾可以暫時理解為對電腦內(nèi)存的不必要的占用,GC是回收清理這些垃圾的工具,他也是在JVM中運行的。
就比如我們生活在一個房間中,每天都會產(chǎn)生一些生活垃圾,這些垃圾會占用房間中的一些位置空間,這時你有一個保姆就是GC,它會定時去識別哪些是垃圾,然后將這些垃圾扔掉,存放垃圾的地方就騰出來可以放其他東西啦?。?!
JVM
JVM是一個虛擬的計算機,具有指令集并使用不同的存儲區(qū)域。負責(zé)執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存、寄存器。
- 對于不同的平臺,有不同的虛擬機。
- 只有某平臺提供了對應(yīng)的java虛擬機,Java程序才可在此平臺運行
- Java引入虛擬機的機制屏蔽了底層運行平臺的差別,實現(xiàn)了“一次編譯,到處運行”
垃圾回收
對于有編程經(jīng)驗的同學(xué)應(yīng)該知道,在C語言中資源的占用是需要我們手動去釋放的,稍不注意就會產(chǎn)生內(nèi)存溢出,內(nèi)存泄漏的問題,Java相當(dāng)于一輛自動擋汽車,引入垃圾回收機制,自動把不需要的內(nèi)存資源回收掉。不再使用的內(nèi)存空間應(yīng)回收—— 垃圾回收。
- 在C/C 等語言中,由程序員負責(zé)回收無用內(nèi)存。
- Java 語言消除了程序員回收無用內(nèi)存空間的責(zé)任:它提供一種系統(tǒng)級線程跟蹤存儲空 間的分配情況。并在JVM空閑時,檢查并釋放那些可被釋放的存儲空間。
- 垃圾回收在Java程序運行過程中自動進行,程序員無法精確控制和干預(yù)。
當(dāng)然Java中的GC機制也不是萬金油,在某些極端情況下仍然會出現(xiàn)內(nèi)存溢出,我們可以通過實際情況修改參數(shù)和代碼,暫時就不用擔(dān)心啦
總結(jié):
- JVM是安裝在計算機上提供Java程序的運行環(huán)境
- 不同的操作系統(tǒng)有不同的JVM,可以實現(xiàn)同一個Java程序不需要做任何修改,就可以運行在不同的操作系統(tǒng)上
- Java還引入了GC也就是垃圾回收機制,會幫助我們自動回收不需要再占用的內(nèi)存空間
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。