狂神day3-Java发展、优势、与C区别
JAVA介绍
JAVA发展故事
-
C:
- 贴近硬件,运行极快、效率高。
- 但需要指针和内存管理, 容易犯错
- 但平台移植性低
-
C++:
- 面向对象,适合图形、游戏领域
- 但比C还要复杂
-
JAVA:
- JAVA 2标准版J2SE:占领桌面(虽然运行程序要装虚拟机很麻烦)(桌面程序、控制台开发…)
JAVA 2移动版J2ME:占领手机(但那时移动互联网未流行)- JAVA 2企业版J2EE:占领服务器(特别适合!)(web端,服务器开发)
- 基于JAVA开发了许多平台、系统、工具。
- 解决三高问题——高可用高性能高并发,把程序员从事务、安全、权限管理中解放出来,专注于业务开发。
- 大数据领域-Hadoop、手机端-Android都是用 Java 开发的
JAVA优势
- 简单 -- “纯净版C++”,语法基于C,没有头文件、没有指针运算和内存分配,所以易学。
- 面向对象 -- 模拟人的思维写程序,重点在对象和对象的借口上。万物皆对象。
- 可移植性 -- 最重要特性。wrt once, run anywhere == WORA
- 高性能 -- 接近C++效率
- *分布式 -- 网络分布式环境。通过URL访问网络资源,跟本地访问一样简单。还支持远程方法调用。
- *动态性 -- 很多框架底层基于这个反射机制,c++无法实现
- 多线程 -- 主流原因之一。如同时qq+游戏
- 安全性 -- 检查内存合法,及时出现问题也不会崩溃。因为有异常机制,捕获异常。
- 健壮性 -- 多人用
课件补充——JAVA和C区别比较
可移植性
-
JAVA在所有平台上运行都是一样的!(除了安卓JAVA)
-
C语言:
- 不同平台要给出不同的源代码source code,
- 编译后,根据各平台不同生成不同的二进制可执行文件binary executable (也就是机器码)
- C优点:运行速度快
-
JAVA:
- 将统一的源代码source code,编译为可跨平台的“字节码”bytecode
- 有着标准化的虚拟机,来翻译这个字节码。
- 几乎所有虚拟机都用“JIT”编译器,将bytecode转换成本地可执行文件。
- JAVA优点:随意,可移植性强
- 没C那么快,就因为多一层解释bytecode的操作!
-
JAVA好处是写得快,C好处时运行快。总体来说差异不大。
面向过程vs面向对象
- C语言:
- 程序式procedural、命令式imperative语言
- C 以函数分解作为主要范例paradigm——“先做这个,再做那个”。函数不断嵌套调用子函数、子子函数等。
- 数据在树状结构中流动,不利于长期演变成更大程序
- JAVA:
- 也是程序式、命令式语言
- JAVA 的(意向)范式是面向对象的,由类、对象组织成了函数和数据。
- 更适合大的项目、团队项目,因为每部分都以对象形式维护好其内部的数据
JDK、JRE、JVM
JDK:Java Development Kit
JRE:Java Runtime Environment
JVM:Java Virtual Machine【跨平台的核心】
- JDK > JRE > JVM 层层包含关系
- JDK在JRE基础上,扩充一些开发工具
- JRE运行时环境--包含JAVA虚拟机、一些函数(库)、JAVA应用程序Applet等
- JVM用软件/硬件都可以实现。模拟小CPU处理JAVA相关的东西,处理成自己码。有解释型、编译型。屏蔽了平台的差别。
浙公网安备 33010602011771号