Java基础——Java的技术特点
Java的5个技术特点(详细阐述)
1. 简单性:
简单性:
1. 由C语⾔,C++延伸到 Java语⾔,风格类型相似
2. 同时,抛弃了C++中的头⽂件、指针、结构、联合、隐式的类型转换和操作符重载等等等。什么是指针:如多重指针、各种级别指针等
3. Java提供了丰富的包,可以很⽅便的开发(C++/C# :叫做类库;Java:叫做包)
Java的包:因封装的不同,出现各种名称样式
如:SSH、SSM、Struts、Hibernate、MVC架构等等,都是因为API变化了
SSH是 struts+spring+hibernate的⼀个集成框架,是⽬前⽐较流⾏的⼀种Web应⽤程序开源框架
java和jsp
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合⽽成,常作为数据源较简单的web 项⽬的框架。
Struts:是开源框架。使⽤Struts的⽬的是为了帮助我们减少在运⽤MVC设计模型来开发Web应⽤的时间。如果我们想混合使⽤Servlets 和JSP的优点来建⽴可扩展的应⽤,struts是⼀个不错的选择。它通过采⽤JavaServlet/JSP技术,实现了基于Java EEWeb应⽤的MVC设计模式的应⽤框架,是MVC经典设计模式中的⼀个经典产品。
Hibernate是⼀个开放源代码的对象关系映射框架,它对JDBC进⾏了⾮常轻量级的对象封装,它将POJO与数据库表建⽴映射关系,是⼀个全⾃动的orm框架,hibernate可以⾃动⽣成SQL语句,⾃动执⾏,使得Java程序员可以随⼼所欲的使⽤对象编程思维来操纵数据库。Hibernate可以应⽤在任何使⽤JDBC的场合,既可以在Java的客户端程序使⽤,也可以在Servlet/JSP的Web应⽤中使⽤,最具⾰命意义的是,Hibernate可以在应⽤EJB的J2EE架构中取代CMP,完成数据持久化的重任。
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,⼀种软件设计典范,⽤⼀种业务逻辑、数据、界⾯显⽰分离的⽅法组织代码,将业务逻辑聚集到⼀个部件⾥⾯,在改进和个性化定制界⾯及⽤户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来⽤于映射传统的输⼊、处理和输出功能在⼀个逻辑的图形化⽤户界⾯的结构中。
2. ⾯向对象
Java⾯向对象(⼜称Java Object Oriented,Java OO),它属于⾯向对象的程序设计语⾔OOP(Object Oriented Programming)。
⾯向对象和⾯向过程都是⼈类的⾃然思维⽅式。
⾯向对象与⾯向过程的区别:
⾯向过程就是分析出解决问题所需要的步骤,然后⽤函数把这些步骤⼀步⼀步实现,使⽤的时候⼀个⼀个依次调⽤就可以了。
⾯向对象是把构成问题事务分解成各个对象,建⽴对象的⽬的不是为了完成⼀个步骤,⽽是为了描叙某个事物在整个解决问题的步骤中的⾏为。
例如五⼦棋,⾯向过程的设计思路就是⾸先分析问题的步骤:1、开始游戏,2、⿊⼦先⾛,3、绘制画⾯,4、判断输赢,5、轮到⽩
⼦,6、绘制画⾯,7、判断输赢,8、返回步骤2,9、输出最后结果。把上⾯每个步骤⽤分别的函数来实现,问题就解决了。
⽽⾯向对象的设计则是从另外的思路来解决问题。整个五⼦棋可以分为 1、⿊⽩双⽅,这两⽅的⾏为是⼀模⼀样的,2、棋盘系统,负责绘制画⾯,3、规则系统,负责判定诸如犯规、输赢等。第⼀类对象(玩家对象)负责接受⽤户输⼊,并告知第⼆类对象(棋盘对象)棋⼦布局的变化,棋盘对象接收到了棋⼦的i变化就要负责在屏幕上⾯显⽰出这种变化,同时利⽤第三类对象(规则系统)来对棋局进⾏判定。
可以明显地看出,⾯向对象是以功能来划分问题,⽽不是步骤。同样是绘制棋局,这样的⾏为在⾯向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计⼈员会考虑到实际情况进⾏各种各样的简化。⽽⾯向对象的设计中,绘图只可能在棋盘对象中出现,从⽽保证了绘图的统⼀。
功能上的统⼀保证了⾯向对象设计的可扩展性。⽐如我要加⼊悔棋的功能,如果要改动⾯向过程的设计,那么从输⼊到判断到显⽰这⼀连
功能上的统⼀保证了⾯向对象设计的可扩展性。⽐如我要加⼊悔棋的功能,如果要改动⾯向过程的设计,那么从输⼊到判断到显⽰这⼀连串的步骤都要改动,甚⾄步骤之间的循序都要进⾏⼤规模调整。如果是⾯向对象的话,只⽤改动棋盘对象就⾏了,棋盘系统保存了⿊⽩双⽅的棋谱,简单回溯就可以了,⽽显⽰和规则判断则不⽤顾及,同时整个对对象功能的调⽤顺序都没有变化,改动只是局部的。
再⽐如我要把这个五⼦棋游戏改为围棋游戏,如果你是⾯向过程设计,那么五⼦棋的规则就分布在了你的程序的每⼀个⾓落,要改动还不如重写。但是如果你当初就是⾯向对象的设计,那么你只⽤改动规则对象就可以了,五⼦棋和围棋的区别不就是规则吗?(当然棋盘⼤⼩好像也不⼀样,但是你会觉得这是⼀个难题吗?直接在棋盘对象中进⾏⼀番⼩改动就可以了。)⽽下棋的⼤致步骤从⾯向对象的⾓度来看没有任何变化。
当然,要达到改动只是局部的需要设计的⼈有⾜够的经验,使⽤对象不能保证你的程序就是⾯向对象,初学者或者很蹩脚的程序员很可能以⾯向对象之虚⽽⾏⾯向过程之实,这样设计出来的所谓⾯向对象的程序很难有良好的可移植性和可扩展性。
⾯向对象的优点
软件进⼊各领域→需要去调⽤
对不熟悉的领域→只能⾯向对象(可移植性⾼)
万物皆对象:Objectl,在台湾称之为物件(东西)
3. 与平台⽆关
要了解这个特点,⾸先要掌握Java⼯作原理
Java源⽂件→编译器→.class⽂件(字节码⽂件)→解释器→各种操作系统(跨平台)
上⾯这个流程到各种操作系统属于JDK,JDK包含了JRE
⽽从.class到各种操作系统之间的区域属于JRE
Java Development kit
包括了
JDK:JDK中也包含了JRE
JRE:Java运⾏环境,给客户安装JRE
JVM:Java虚拟机
注意:
⾃⼰开发:给⾃⼰安装JDK1.8 for windows,x64,x86等
给客户装:JRE 1.8 for Linux等
JVM:作为解释性语⾔,Java源代码编译后⽣成的class字节码⽂件是不能直接执⾏的,需要⼀个称为Java虚拟机(Java Virtual Machine,简称JVM)的程序翻译成本地的机器码后才能执⾏。
Java语⾔的⼀个⾮常重要的特点就是与平台的⽆关性。⽽使⽤Java虚拟机是实现这⼀特点的关键。⼀般的⾼级语⾔如果要在不同的平台上运⾏,⾄少需要编译成不同的⽬标代码。
⽽引⼊Java语⾔虚拟机后,Java语⾔在不同平台上运⾏时不需要重新编译。Java语⾔使⽤Java虚拟机屏蔽了与具体平台相关的信息,使得Java语⾔编译程序只需⽣成在Java虚拟机上运⾏的⽬标代码(字节码),就可以在多种平台上不加修改地运⾏。Java虚拟机在执⾏字节码时,把字节码解释成具体平台上的机器指令执⾏。这就是Java的能够“⼀次编译,到处运⾏”的原因。
Java API:作为⼀个庞⼤的类库,与JVM ⼀起,将我们编写的Java程序与下层硬件隔离。
⾯试中如何解读出Java⼯作机制?
(1) 编写Java源代码
(2) 使⽤编译器编译为.class字节码⽂件
(3) 然后运⾏命令
(4) 使类加载器将class⽂件加载内存
(5) 对类⽂件进⾏校验
(6) ⽤解释器解释给操作系统
4. 安全性和健壮性(鲁棒性)
调试程序是,报错出现的时间点分为
编译期:语法问题/语法错误
运⾏期:出现逻辑错误,⽤户输⼊导致错,运⾏环境问题或硬件问题
Java有⼀条挽救回来的机制:异常处理:try catch,
通过垃圾回收器gc避免内存泄漏,内存泄漏导致运⾏越来越慢,内存越来越少,释放出空间,垃圾回收机制会清楚的知道什么时候回收,什么时候不回收。
总结:
挽救回来的机制
摈弃了低层操作,更加安全
提供了gc,⾃动回收,不会造成能吃泄漏
5. 多线程
⼀句代码的事情,实际上不能成为特点,C++,C语⾔都可以实现。
通过以上这些Java技术特点我们知道程序员需要哪些能⼒
排除能⼒
⾃学能⼒
协作开发能⼒
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论