java語言簡介
Java語言于1995年正式推出,由sun公司出品,在2009年跟隨sun公司一起被Oracle收購,目前已更新至java8版本,2016年的TIOBE編程語言排行中,java以18%的占有率高居第一(http://www.tiobe.com/tiobe-index/)而千年老二C語言只有9%的占有率,可以說java是目前最多程序員使用的語言。
除了因為java是門好語言,也是因為java程序員的功勞,大家不斷的造輪子,java有各種各種的庫,基本你能想到的功能都能實現(xiàn),各種跨平臺應用,從網站開發(fā),到后臺開發(fā),再到嵌入式開發(fā)(如手機),程序員越來越離不開java,因為它有太多成熟的解決方案了,放棄java,相當于你放棄了一條通往快速開發(fā)的捷徑。
java開發(fā)環(huán)境搭建
想要運行java程序,需要安裝JRE,java運行時
若想進行java程序開發(fā),需要安裝JDK,java開發(fā)工具
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK包含JRE,所以我們要開發(fā)程序,在官網下載最新版JDK即可
安裝JDK后,配置java環(huán)境變量
1.右鍵我的電腦->屬性->高級->環(huán)境變量
2.新建系統(tǒng)變量JAVA_HOME和CLASSPATH
變量名(N):JAVA_HOME 變量值(V):C:\Program Files\Java\jdk1.8.0 (jdk安裝目錄) 變量名(N):CLASSPATH 變量值(V):.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3.選擇“系統(tǒng)變量”中變量名為“Path”的環(huán)境變量,把jdk安裝路徑中bin目錄的絕對路徑,添加到Path變量的值中。
變量名(N):Path 變量值(V):%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
配置完成,在命令控制臺輸入java -version 若能顯示java版本,則成功了。
此時隨手寫一個類Hello.java
public class Hello{ public static void main(String[] args){ System.out.println(“hello!”); } }
進入類所在目錄,控制臺輸入
javac Hello.java //編譯
Java Hello //運行
控制臺成功輸出 hello!
第一個java程序完成了
ubuntu系統(tǒng)的環(huán)境搭建請參考這文章
http://blog.csdn.net/forgot2015/article/details/54340888
java IDE介紹
當編寫大型java程序時,一般就要用到IDE工具了,這些集成開發(fā)環(huán)境提供許多方便的功能,如代碼補全,調試工具,各種快捷鍵和插件等等。
也有一些輕量的支持各種插件的文檔編輯器,如vim,emacs,vscode,atom等等
netbeans
免費, sun公司出品(java也是sun公司出品),2009年被oracle甲骨文收購,慢慢沒落,現(xiàn)在用的人比較少,有各種語言插件
https://netbeans.org/
eclipse
免費,IBM創(chuàng)建,目前由Eclipse基金會管理,是當前最多人用的java IDE,同樣有各種語言插件
http://www.eclipse.org/downloads/eclipse-packages/
Intellij IDEA
有社區(qū)版有收費版,jetbrains出品,也挺多人使用,支持各種語言插件,某寶幾塊錢一個年度激活碼
https://www.jetbrains.com/idea/
Android Studio
免費,google出品,在IDEA社區(qū)版基礎上進行改進,主要用作android開發(fā),也能做java開發(fā)
https://developer.android.google.cn/studio/index.html
如果你不知道用哪個IDE, 若做java開發(fā)推薦eclipse, android開發(fā)推薦Android Studio
一些常用概念
類:類是一個模板,它描述一類對象的行為和狀態(tài)
對象:類的一個實例,稱為一個對象
繼承:子類繼承父類之后,將擁有父類的一些公開方法和變量,java類只能繼承一個父類
封裝:設置類中域的訪問權限,給外部類提供統(tǒng)一的訪問接口,提高數(shù)據(jù)的安全性
多態(tài):結合繼承,重載等來使用,根據(jù)不同的參數(shù),調用不同的處理方法
接口:其中的方法默認是public abstract,變量默認是public static final,方法只能寫方法體,不能寫具體的方法實現(xiàn)。java可以實現(xiàn)多接口
抽象類:與接口類似,但子類只能繼承一個抽象類,抽象類可以包含非抽象方法和參數(shù),而包含抽象方法的類需要轉為抽象類
方法重載:根據(jù)傳入的不同參數(shù),調用不同方法。 方法名必須同,傳入?yún)?shù)必須不同,訪問權限可修改,返回參數(shù)可修改
方法重寫:繼承父類后,重寫父類方法來實現(xiàn)不同的功能。 方法名必須同,傳入?yún)?shù)必須同,訪問權限要大于等于父類,拋出異常要小于等于父類,返回值必須相同,@Override原來是給編譯器看的,并不會真的運行到程序里,而這個是為了讓編譯器幫你檢查名字有沒有拼對,所以其實不寫也可以,但如果不寫,而你不小心把重寫的方法名字寫錯了,那就尷尬了
常用縮寫
Java SE Java Standard Edition,標準版本,一般我們下載的jdk是這個
Java ME Java Micro Edition , 微版本,用于嵌入式開發(fā)
Java EE Java Enterprise Edition,企業(yè)版,用作企業(yè)開發(fā)
J2EE(同上):Java 2 Platform Enterprise Edition,Java2平臺企業(yè)版
JVM:java virtual machine,java虛擬機
JRE:java runtime environment,java運行環(huán)境
JDK:java development kit,java開發(fā)工具包
OpenJDK:JDK開源版本
JSON:JavaScript Object Notation,一種輕量級的數(shù)據(jù)交換格式
JDBC:Java Database Connectivity,java數(shù)據(jù)庫連接
JNI:Java Native Interface,JAVA本地調用
JSP:Java Server Pages ,Java服務器網頁
Java IDL:Java Interface Definition Language,提供與CORBA(Common Object Request Broker Architecture)的無縫的互操作性。這使得Java能集成異構的商務信息資源。
JavaBean:本質上是一個類,封裝了一些參數(shù)和getter、setter方法
JavaFX:一個以Java為基礎構建的富客戶端平臺,對手是Flash、Silverlight
JavaScript:直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,用來配合html、css寫網站前端,與java無關,只是名字類似,部分語法類似
OpenGL:開放圖形庫(英語:Open Graphics Library,縮寫為OpenGL)是個定義了一個跨編程語言、跨平臺的應用程序界面(API)的規(guī)范,它用于生成二維、三維圖像
ASP:Active Server Pages ,活動服務器網頁,微軟的
ASPX:Active Server Page Extended File 是微軟的在服務器端運行的動態(tài)網頁文件
IIS:Internet Information Server ,互聯(lián)網信息服務器,微軟的產品
API:Application Programming Interface,應用程序接口
CGI:Common Gateway Interface,通用網關接口
DOM:Document Object Model,文檔對象模型
EJB:Enterprise JavaBeans,使得開發(fā)者方便地創(chuàng)建、部署和管理跨平臺的基于組件的企業(yè)應用
GUI:Graphical User Interface,圖形用戶界面
IDE:Integrated Development Environment,集成開發(fā)環(huán)境
XML:Extensible Markup Language,擴展標記語言
POJO:Plain Old Java Objects
IoC:Inversion of Control,控制反轉,是說對象的控制權進行轉移
AOP:Aspect Oriented Programming,面向切面編程
AWT:Abstract Window ToolKit,抽象窗口工具包,是java最早的用于編寫圖形節(jié)目應用程序的開發(fā)包。
Swing:一個為Java設計的GUI工具包,是為了解決AWT存在的問題而新開發(fā)的包,它以 AWT 為基礎的。
Servlet:用Java編寫的服務器端程序
Applet:用Java語言編寫的小應用程序,可以直接嵌入到網頁中,并能夠產生特殊的效果
學習常用網站
github https://github.com/
這里有各種成熟的輪子
stackoverflow http://stackoverflow.com/
編程的世界,有問題不是問百度,而是問stackoverflow,若解決不了再問谷歌
w3cschool http://www.w3cschool.cn/java/
這里有各種編程語言的基礎語法知識
慕課網 http://www.imooc.com
有時候文字看不懂,看下視頻解說會好理解些
常用框架
不要重復造輪子,java有很多成熟的框架,一般我們直接應用就行了,實在滿足不了需求才會自己造輪子,當然大公司都是有內部框架的
Spring
用來取代EJB,是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架
Java開源J2EE框架,Spring是一個解決了許多在J2EE開發(fā)中常見的問題的強大框架。Spring提供了管理業(yè)務對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基于使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。Spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率并且減少了可能的錯誤。Spring的數(shù)據(jù)訪問架構還集成了hibernate和其他O/R mapping解決方案。Spring還提供了唯一的事務管理抽象,它能夠在各種底層事務管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給POJOs提供了聲明式的事務管理和其他企業(yè)事務–如果你需要–還能實現(xiàn)你自己的 aspects。這個框架足夠強大,使得應用程序能夠拋開EJB的復雜性,同時享受著和傳統(tǒng)EJB相關的關鍵服務。Spring還提供了可以和IoC容器集成的強大而靈活的MVCWeb框架?!維pringIDE:Eclipse平臺下一個輔助開發(fā)插件】。
SpringMVC
用來取代Struts,是一個輕量級的MVC框架
MyBatis
用來取代Hibernate,Java開源持久層框架,使用ibatis提供的ORM機制,對業(yè)務邏輯實現(xiàn)人員而言,面對的是純粹的Java對象,這一層與通過Hibernate 實現(xiàn)ORM 而言基本一致,而對于具體的數(shù)據(jù)操作,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發(fā)者編寫具體的SQL語句。相對Hibernate等“全自動”O(jiān)RM機制而言,ibatis 以SQL開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設計提供了更大的自由空間。作為“全自動”O(jiān)RM 實現(xiàn)的一種有益補充,ibatis 的出現(xiàn)顯得別具意義。
Hibernate
對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復性代碼
Java開源持久層框架,Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數(shù)據(jù)持久化的重任。Eclipse平臺下的Hibernate輔助開發(fā)工具:【Hibernate Synchronizer】【MiddlegenIDE】
Struts
Java開源Web框架,Struts是一個基于SunJ2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現(xiàn)的。由于Struts能充分滿足應用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進行開發(fā)時不用再自己編碼實現(xiàn)全套MVC模式,極大的節(jié)省了時間,所以說Struts是一個非常不錯的應用框架。
SSH的誕生,其實就是對 servlet的簡陋的不滿,以及 java EE中 EJB的不滿而誕生的。
其中的struts or spring MVC ,是對請求路徑,數(shù)據(jù)解析等操作提供了更高層次的抽象,我相信每一個在web.xml中配置上百個路徑映射的人都深惡痛絕。
第二個 S ,早先 Spring 的提出就是為了解決 java項目中各種對象之間的依賴和解耦所提出的方案。目前的Spring 已經自成一體了,已經成為了另一種事實上的標準。
第三個 H,hibernate (其實大家用mybatis比較多),是為了簡化 java與 關系性數(shù)據(jù)庫交互而誕生的。如果你用過原生的JDBC 操作數(shù)據(jù)庫,特別是存在上百個sql的時候,想跳樓的想法會時不時冒出來。畢竟數(shù)據(jù)庫中存儲的數(shù)據(jù)和 java 能操作的對象是兩碼事,為了在其中進行轉換,無數(shù)先輩折戟沉沙,比如 enum 在數(shù)據(jù)庫中的存儲。
SSH框架:Spring+Struts+Hibernate
目前推薦更好更新的組合:Spring+SpringMVC+Mybatis
部分內容來自網絡,如有侵權請聯(lián)系刪除
水平有限,有錯懇請不吝賜教,謝謝