狂神day3-Java发展、优势、与C区别

JAVA介绍

JAVA发展故事

  • C:

    • 贴近硬件,运行极快、效率高。
    • 但需要指针和内存管理, 容易犯错
    • 但平台移植性低
  • C++:

    • 面向对象,适合图形、游戏领域
    • 但比C还要复杂
  • JAVA:

    1. JAVA 2标准版J2SE:占领桌面(虽然运行程序要装虚拟机很麻烦)(桌面程序、控制台开发…)
    2. JAVA 2移动版J2ME:占领手机(但那时移动互联网未流行)
    3. JAVA 2企业版J2EE:占领服务器(特别适合!)(web端,服务器开发)
    • 基于JAVA开发了许多平台、系统、工具。
      • 解决三高问题——高可用高性能高并发,把程序员从事务、安全、权限管理中解放出来,专注于业务开发。
      • 大数据领域-Hadoop、手机端-Android都是用 Java 开发的

图标

JAVA优势

  1. 简单 -- “纯净版C++”,语法基于C,没有头文件、没有指针运算和内存分配,所以易学。
  2. 面向对象 -- 模拟人的思维写程序,重点在对象和对象的借口上。万物皆对象。
  3. 可移植性 -- 最重要特性。wrt once, run anywhere == WORA
  4. 高性能 -- 接近C++效率
  5. *分布式 -- 网络分布式环境。通过URL访问网络资源,跟本地访问一样简单。还支持远程方法调用。
  6. *动态性 -- 很多框架底层基于这个反射机制,c++无法实现
  7. 多线程 -- 主流原因之一。如同时qq+游戏
  8. 安全性 -- 检查内存合法,及时出现问题也不会崩溃。因为有异常机制,捕获异常。
  9. 健壮性 -- 多人用

课件补充——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相关的东西,处理成自己码。有解释型、编译型。屏蔽了平台的差别。
posted @ 2021-02-16 13:34  吃饭睡觉打代码  阅读(105)  评论(0)    收藏  举报