java语言简介
Java语言于1995年正式推出,由sun公司出品,在2009年跟随sun公司一起被Oracle收购,目前已更新至java8版本,2016年的TIOBE编程语言排行中,java以18%的占有率高居第一(http://www.tiobe.com/tiobe-index/)而千年老二C语言只有9%的占有率,可以说java是目前最多程序员使用的语言。
除了因为java是门好语言,也是因为java程序员的功劳,大家不断的造轮子,java有各种各种的库,基本你能想到的功能都能实现,各种跨平台应用,从网站开发,到后台开发,再到嵌入式开发(如手机),程序员越来越离不开java,因为它有太多成熟的解决方案了,放弃java,相当于你放弃了一条通往快速开发的捷径。
java开发环境搭建
想要运行java程序,需要安装JRE,java运行时
若想进行java程序开发,需要安装JDK,java开发工具
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK包含JRE,所以我们要开发程序,在官网下载最新版JDK即可
安装JDK后,配置java环境变量
1.右键我的电脑->属性->高级->环境变量
2.新建系统变量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.选择“系统变量”中变量名为“Path”的环境变量,把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系统的环境搭建请参考这文章
http://blog.csdn.net/forgot2015/article/details/54340888
java IDE介绍
当编写大型java程序时,一般就要用到IDE工具了,这些集成开发环境提供许多方便的功能,如代码补全,调试工具,各种快捷键和插件等等。
也有一些轻量的支持各种插件的文档编辑器,如vim,emacs,vscode,atom等等
netbeans
免费, sun公司出品(java也是sun公司出品),2009年被oracle甲骨文收购,慢慢没落,现在用的人比较少,有各种语言插件
https://netbeans.org/
eclipse
免费,IBM创建,目前由Eclipse基金会管理,是当前最多人用的java IDE,同样有各种语言插件
http://www.eclipse.org/downloads/eclipse-packages/
Intellij IDEA
有社区版有收费版,jetbrains出品,也挺多人使用,支持各种语言插件,某宝几块钱一个年度激活码
https://www.jetbrains.com/idea/
Android Studio
免费,google出品,在IDEA社区版基础上进行改进,主要用作android开发,也能做java开发
https://developer.android.google.cn/studio/index.html
如果你不知道用哪个IDE, 若做java开发推荐eclipse, android开发推荐Android Studio
一些常用概念
类:类是一个模板,它描述一类对象的行为和状态
对象:类的一个实例,称为一个对象
继承:子类继承父类之后,将拥有父类的一些公开方法和变量,java类只能继承一个父类
封装:设置类中域的访问权限,给外部类提供统一的访问接口,提高数据的安全性
多态:结合继承,重载等来使用,根据不同的参数,调用不同的处理方法
接口:其中的方法默认是public abstract,变量默认是public static final,方法只能写方法体,不能写具体的方法实现。java可以实现多接口
抽象类:与接口类似,但子类只能继承一个抽象类,抽象类可以包含非抽象方法和参数,而包含抽象方法的类需要转为抽象类
方法重载:根据传入的不同参数,调用不同方法。 方法名必须同,传入参数必须不同,访问权限可修改,返回参数可修改
方法重写:继承父类后,重写父类方法来实现不同的功能。 方法名必须同,传入参数必须同,访问权限要大于等于父类,抛出异常要小于等于父类,返回值必须相同,@Override原来是给编译器看的,并不会真的运行到程序里,而这个是为了让编译器帮你检查名字有没有拼对,所以其实不写也可以,但如果不写,而你不小心把重写的方法名字写错了,那就尴尬了
常用缩写
Java SE Java Standard Edition,标准版本,一般我们下载的jdk是这个
Java ME Java Micro Edition , 微版本,用于嵌入式开发
Java EE Java Enterprise Edition,企业版,用作企业开发
J2EE(同上):Java 2 Platform Enterprise Edition,Java2平台企业版
JVM:java virtual machine,java虚拟机
JRE:java runtime environment,java运行环境
JDK:java development kit,java开发工具包
OpenJDK:JDK开源版本
JSON:JavaScript Object Notation,一种轻量级的数据交换格式
JDBC:Java Database Connectivity,java数据库连接
JNI:Java Native Interface,JAVA本地调用
JSP:Java Server Pages ,Java服务器网页
Java IDL:Java Interface Definition Language,提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。
JavaBean:本质上是一个类,封装了一些参数和getter、setter方法
JavaFX:一个以Java为基础构建的富客户端平台,对手是Flash、Silverlight
JavaScript:直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,用来配合html、css写网站前端,与java无关,只是名字类似,部分语法类似
OpenGL:开放图形库(英语:Open Graphics Library,缩写为OpenGL)是个定义了一个跨编程语言、跨平台的应用程序界面(API)的规范,它用于生成二维、三维图像
ASP:Active Server Pages ,活动服务器网页,微软的
ASPX:Active Server Page Extended File 是微软的在服务器端运行的动态网页文件
IIS:Internet Information Server ,互联网信息服务器,微软的产品
API:Application Programming Interface,应用程序接口
CGI:Common Gateway Interface,通用网关接口
DOM:Document Object Model,文档对象模型
EJB:Enterprise JavaBeans,使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用
GUI:Graphical User Interface,图形用户界面
IDE:Integrated Development Environment,集成开发环境
XML:Extensible Markup Language,扩展标记语言
POJO:Plain Old Java Objects
IoC:Inversion of Control,控制反转,是说对象的控制权进行转移
AOP:Aspect Oriented Programming,面向切面编程
AWT:Abstract Window ToolKit,抽象窗口工具包,是java最早的用于编写图形节目应用程序的开发包。
Swing:一个为Java设计的GUI工具包,是为了解决AWT存在的问题而新开发的包,它以 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开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务–如果你需要–还能实现你自己的 aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。【SpringIDE:Eclipse平台下一个辅助开发插件】。
SpringMVC
用来取代Struts,是一个轻量级的MVC框架
MyBatis
用来取代Hibernate,Java开源持久层框架,使用ibatis提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。
Hibernate
对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
Java开源持久层框架,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】
Struts
Java开源Web框架,Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
SSH的诞生,其实就是对 servlet的简陋的不满,以及 java EE中 EJB的不满而诞生的。
其中的struts or spring MVC ,是对请求路径,数据解析等操作提供了更高层次的抽象,我相信每一个在web.xml中配置上百个路径映射的人都深恶痛绝。
第二个 S ,早先 Spring 的提出就是为了解决 java项目中各种对象之间的依赖和解耦所提出的方案。目前的Spring 已经自成一体了,已经成为了另一种事实上的标准。
第三个 H,hibernate (其实大家用mybatis比较多),是为了简化 java与 关系性数据库交互而诞生的。如果你用过原生的JDBC 操作数据库,特别是存在上百个sql的时候,想跳楼的想法会时不时冒出来。毕竟数据库中存储的数据和 java 能操作的对象是两码事,为了在其中进行转换,无数先辈折戟沉沙,比如 enum 在数据库中的存储。
SSH框架:Spring+Struts+Hibernate
目前推荐更好更新的组合:Spring+SpringMVC+Mybatis
部分内容来自网络,如有侵权请联系删除
水平有限,有错恳请不吝赐教,谢谢