开始接触Android开发已经两年多了,也因此在熟悉的C(++)基础上,学习了Java,并且从中发现了Java的很多优点。今天开始和小伙伴们一起回顾一下Java的基础知识,也是我自己打算做一个Java知识框架总结的开始,后续会对Android、JSP、WEB等等陆续的进行回忆。谈到一门语言,就不得不从它的起源开始说起,Java也不例外。
詹姆斯-高斯林-java的创造者,1990年末,Sun绿色小组为下一代智能家电编写一个通用的控制系统,Java即是当时的一个副产品。在Java出现之前,互联网的网页就像是一张白纸,没有任何的动态内容,由于Java可直接在浏览器中运行,可直接与远程服务交互,因为出现了丰富多彩的网页交互形式。一开始Java语言被称作Oak,但因其被注册,而更名为印尼瓜哇岛的咖啡。1995年5月23日,Java语言发布。1996年Sun推出了JDK1.0(包括运行环境JRE和开发环境JDK)为开发复杂应用程序提供强大功能的开发类库。运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机五个部分,开发环境包括编译Java程序的编译器(javae);1997年2月18日JDK1.1增加了JIT(即时编译器),传统的编译器编译一条运行完后扔掉,而JIT会把经常用到的指令保存在内存中,当下次调用无需重新编译、大大提升了JDK的效率。此时期Java主要应用在网页上的Applet(Java编写的一些小应用程序)以及一些移动设备,1996年底Flash的面试开始逐渐蚕食Java在网页上的应用,1998年12月4日,JDK1.2发布(JSP/Servlet,EJB规范)确定了Java的定位,标志Java向桌面、移动、企业三个领域,正式进入Java2时代并将Java分成J2EE(企业版),J2SE(标准版),J2ME(微型版)三个版本。J2SE是Java技术的核心和基础(J2ME和J2EE的基础);J2ME主要用于控制移动设备和信息家电等有限存储的设备;J2EE应用最为广泛,提供企业应用开发完整的解决方案。JDK被分成三类,核心API所有的Java平台均须提供,可选API(平台不同)、特殊API(如第三方加密类库JCA、JCE)。2000年5月8日,J2SE1.3发布,2000年5月29日,J2SE1.4发布。2002年2月,JDK1.4发布(最成熟版本,Struts、WebWork、Hibernate、Spring开源框架;WebLogic、WebSphere、JBoss等大量企业应用服务器涌现),2004年9月30日发布J2SE1.5(即JDK1.5)正式更名为JavaSE5.0,增加了泛型、增强的for语句、可变数目参数、注释、自动拆箱装箱等功能;发布了新的企业级平台规范,如通过注释特性来简化EJB的复杂性,并推出了EJB3.0规范。并推出了自己的MVC框架规范:JSF,JSF规范类似于ASP.NET的服务端控件,通过它可以迅速地构建复杂的JSP界面。2005年6月Sun发布JavaSE6.0,同时J2EE、J2ME更名为JavaEE、JavaME。2006年SUN公司发布JRE6.0.2009年4月20日,甲骨文收购Sun,2011年发布Java7,2014年3月发布Java8,重新设计了接口和语法、Lambda表达式、方法引用、构造器引用、函数式编程、流式编程、新的日期和时间API等;2014年11月发布了Java9,支持HTTP2.0、DTLS、Unicode7.0、统一的JVM等新特性。
说完了Java的历史,接下来自然要介绍一下java和其他语言相比的优势和劣势。JAVA(VS)C++,语法方面平齐了注入宏代换、const修饰符、全局变量和函数等;在继承方面使用了单继承和多接口来代替多继承。在源代码的组织上面使用了声明与实现于一体的逻辑封装。JAVA(VS)C#在Windows服务、事件日志、访问注册表。而且MicroSoft已经Windows操作的大量基类c#开发更为便捷。但Java的优势在于跨平台。Ruby(VS)JAVA,Ruby一切皆是对象,简洁,变量无类型、无需声明、因为可以保存任何的数据类型,有强大的正则表达式的支持,支持重载、闭合、迭代、集合等,完全跨平台,可以在任何操作系统上解释执行,但Java更适合于又复杂需求的大型企业应用。Python(VS)Java,python的优势在于可扩展性和清晰的语法。Java需经过编译(*.class,将源文件编译成字节码)解释(JVM负责,解释执行平台无关的字节码)两个阶段,实现跨平台的运行。
Java开发环境搭建:
1.安装JDK:提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时的环境(JRE包含JVM核心虚拟机,并提供了运行时的其他环境)Java类库
2.环境变量设置:JAVA_HOME,classpath和path,点击“新建…”:变量名写JAVA_HOME,变量值写c:\javasoft\jdk1.6.0_21这样就配置好JAVA_HOME,这个变量时其他JAVA程序约定俗称的寻找Java安装目录的依据。找到变量Path,点击“编辑…”,在最前端加入“%JAVA_HOME%\bin;” 这样, 我们就可以在任何路径下使用java和javac命令了。classpath变量值为:“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”,留意一下最前面的”.”,它代表当前目录classpath的作用是让java虚拟机能够找到class文件的位置。备注:1.set PATH = %PATH%;C:\Program Files\Java\jdk1.8.0_05;LINUX设置PATH=.$PATH:$HOME/bin:home/xxx/Java/jdk1.8.0_05,#导出PATH环境变量 export PATH重新登录spurce.bash_profile。2.可以用 java -classpath .....java类名指定搜索路径。3.classPath在JDK1.5以后可不设置,因为默认搜索路径命令:javac -d destdir srcFile; java 类名等
入口:必须有类,类中的入口函数public static void main(String [] args){ }
源文件命名:一个Java文件中最多有一个public,如果有,源文件名必须与其一致。
常见的IDE:Eclipse、JBuilder、NetBeans等