浅谈Java语言

浅谈Java语言

曾被朋友问过,你有写博客的习惯么,我回答没有,但是想想自己进入大学至今,接触编程快三年了,断断续续地学习Java,也断断续续地学习其他技术,但是始终没有一个记录的习惯,这也导致我很多东西不成体系,所以我决定来把我对Java的很多理解写下来,希望可以留作记录以及知识的正确性的鉴别。
废话不多说,先上个图
2019年编程语言的排行
根据这张图,我们不难看出,Java在编程语言中有着得天独厚的优势,Java最开始的时候是希望可以嵌入到家电当中,我想如果可以实现,也许智能家居会提前很多年,但很可惜,没有实现,最后Java成为了一个跨平台的语言,最关键的地方在于JVM,JVM赋予Java以“One Write,Run Anywhere”的能力,同时在《Java核心技术 卷I》中的一段话,我认为很好的阐述了Java存在的意义。

Java并不只是一种语言。在此之前出现的那么多种语言也没有能够引起那么大的轰动。Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

Java的设计者已经编写了颇有影响力的“白皮书”,用来解释设计Java的初衷以及完成的情况,且发布了一个简短的摘要,而其可以用以下11个关键术语进行组织:

  • 简单性
    ① Java相当于C++的“纯净版”,没有头文件、指针运算、结构、联合、操作符重载、虚基类等,但是设计者并没有试图去重新定义一套新的编程语言,如果你熟悉C或者C++,你就可以很快的转换到Java语法中。
    ② 简单的另一个方面是小。Java的目标之一是支持开发能够在小型机器上独立运行的软件。基本的解释器以及类支持大约仅为40KB;再加上基础的标准类库和对县城的支持(基本上是一个自包含的微内核)大约需要增加175KB。
  • 面向对象
    ① Java将重点放在数据(对象)和对象的接口上。
    ② Java与C++在面向对象的特性上旗鼓相当,而不同点在于C++是多重继承,而Java则是用接口的概念进行代替。
  • 分布式
    Java有一个丰富的例程库,用于处理类似于HTTP、FTP之类的协议。
  • 健壮性
    Java编写的程序具有多方面的可靠性,Java编译器可以检测许多在其它语言中仅在运行时才能检测出来的问题。
  • 安全性
    Java适用于网络/分布式环境。为了实现这一目标,在安全方面投入了很大的精力。
    从一开始,Java就设计出了防范各种攻击的手段,其中包括:
    运行时堆栈溢出。如蠕虫和病毒常用的攻击手段。
    破坏自己的进程空间之外的内存。
    未经授权读写文件。
    在最开始的时候,Java允许不可信的代码在一个沙箱环境中执行,在这里它不会影响主系统,用户相信不会发生不好的事情,因为Java代码不论来自哪里,都不能脱离沙箱。但是Java的安全模型很复杂,JDK第一版发布不久之后,普林斯顿大学的一些安全专家就发现一些小bug会允许不可信的代码攻击主系统。最初,安全but可以很快修复,但是经过一段时间之后,黑客已经很擅长找出安全体结构实现中的小漏洞。遭遇过多次高调攻击之后,浏览器开发商和Oracle都越来越谨慎。Java浏览器插件不再信任远程代码,除非代码有数字签名且用户同意执行这个代码。
  • 体系结构中立
    编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。
    当时,“虚拟机”并不是一个新鲜产物,诸如Lisp、Smalltalk、Pascal等编程语言多年前就用了这种技术,不过Java虚拟机还有一起其他的优点:它可以检测指令序列的行为,从而增强其安全性。
  • 可移植性
    与C和C++不同,Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确说明。
    例如,在Java中int永远为32位的整数,而在C和C++中,int可能是16位整数,也可能是32位整数,也可能是编译器提供商指定的其他大小。
    在java中,数据类型具有固定的大小,这消除了代码移植时令人头痛的主要问题。二进制数据以固定的格式进行存储和传输,消除了字节顺序的困扰,字符串是用标准的Unicode格式存储的。
  • 解释型
    Java解释器可以在任何移植了解解释器的机器上执行Java字节码。由于链接是一个增量式且轻量级的过程,所以开放过程中也更加快捷。
  • 高性能
    和其他解释执行的语言如BASC、TCL不同,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。
  • 多线程
    多线程可以带来更好的交互响应和实时行为。
    Java在当时很超前,它是第一个支持并发设计的主流语言。
  • 动态性
    Java与C或C++想比,更加具有动态性,它能够适应不断发展的环境。库中可以自由地添加新方法和实例变量,而对客户端没有任何影响。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值