Java核心技术讲解学习

LuckQI

在这里你可以得到不只是技术,关注即可习得新技能

做java有一段时间了。经常写业务代码,长时间里,自己只知道怎么使用其中的api,对于java的理解很多就忘记了。正好极客时间里面出来了一个课程关于JAVA核心技术的讲解,自己也开始学习,期望能提高自己对java的理解。

首先提出需要的问题。

  1. Java平台的理解
  2. Java是解释执行吗?

我看到这个问题的时候也是一头懵逼。难道面试的时候会问这种问题吗。让我这个小白渣渣心中突突了一下。其实让我自己说也不知道怎么说。赶紧趁着机会学习下。

Java平台的理解 : 一个面向对象编程的语言

  1. 具有封装,继承,多态特性
  2. 一次执行,处处运行。与平台无关性。可以让java程序在别的平台上运行,当然这是由JVM确定的。java在第一次编译生成.class文件。JVM运行.class文件。与c还有c++区别最大的一点就是开发者不用在纠结各个操作系统的区别,内存管理在Java上也弱化了很多。
  3. 类库多,并且第三方提供的类库十分丰富,帮助开发者解决了很多问题。
  4. Java的大数据生态。在生态上Java可以说是最成熟的一种解决方案。hadoop,spark,hive等等,都提供Java语言的支持。
  5. Jre解决了Java的开发环境,虚拟机的支持,还有各种类库,而JDK提供各种开发工具,并且还有诊断工具帮助开发者去了解程序执行的问题。例如jmc ,jmap ,jvisualvm等等
  6. 垃圾回收 。Java中降低了开发过程内存管理的开销,一般程序对于内存管理不是必要的话,java中基本上可以忽略,并且能降低内存出现泄露的概率。虽然会有提高一部分开销,但是带来的好处也是显而易见的。

Java是解释性执行吗?

答案是否定的。为什么这么说?

我们都知道JAVA分为编译期和运行时两种类型。在编译期,Javac会把源码文件编译成.class文件,其实class文件里面就是字节码。而不是直接执行的机器码。那么在运行时,我们就需要依靠虚拟机JVM了。我们常用的Hotspot JVM 提供的是JIT动态编译器。也就是常用的动态编译器。在运行时刻将热点代码编译成机器码。这种情况下的代码就属于编译执行。不是解释执行了。随着Java的发展。Java8已经开始了解释和编译混合的模式。来快速的运行代码。

  1. 1 JIT动态编译,在Hotsoot中有两种模式,一个是client模式,适用于启动速度敏感的应用。一个是server模式。优化长时间运行的服务端应用。最新的动态编译还有AOT直接将字节码编译成机器代码,避免了JIT方面的开销。

下面是画的简单的脑图,我们可以在下面的内容上继续添加。满足对Java的理解。

Java平台

Exception 与Error

我们正常在程序中经常会遇到一些异常问题,需要进行解决。那么这两者有什么区别呢。让我们看下继承关系。

Error与Exception 都是继承Throwable.其中Throwable 在Java中才可以被抛出throw或者catch。 它是异常处理机制的基本组成类型。

Error是在不长出现的内容,大部分的Error是程序出现了不可意料的错误,比如OutOfMemoryError这类的。

Exception 分为 可检查的和不检查的错误,可检查的错误一般是能在编译器里面自然的能看到。而不可检查的错误比如我们常常遇见的空指针异常。这种异常一般是我们可以捕捉到的异常。一般这方面的异常有连接池异常,访问异常,IO异常等等。

简单脑图异常

异常图类集成关系

错误异常

在程序中,我们在处理异常的时候基本上要进行分门别类进行处理,不建议统一按照Exception捕捉,有的异常时需要抛出来让业务层统一处理,有的需要单独处理。特别是在流式程序中执行,异常不是容易查找。

  1. 性能上 try catch 会有十分大的性能开销。所以我们在程序中处理的时候,尽量不要try 一大段代码。
  2. Java每实例化一个Exception 都会对当时的栈进行快照,这是一个重的操作。开销不能忽略。

欢迎大家关注

原文发布于微信公众号 - Java社区(Java5206868)

原文发表时间:2018-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员的知识天地

用 Python 抓网页,你想问的都帮答好了,你还有不懂的吗?

近年来,随着大数据、人工智能、机器学习等技术的兴起,Python 语言也越来越为人们所喜爱。但早在这些技术普及之前,Python 就一直担负着一个重要的工作:自...

763
来自专栏芋道源码1024

【Netty 专栏】深入浅出 Netty 内存管理 PoolChunk

摘要: 原创出处 https://www.jianshu.com/p/c4bd37a3555b 「占小狼」欢迎转载,保留摘要,谢谢!

850
来自专栏IT可乐

深入理解计算机系统(4.1)------Y86指令集体系结构

  本章我们将进入处理器体系结构介绍的神秘海洋中,我们熟悉的手机,电脑等设备的核心硬件都离不开处理器。处理器可以称的上是人类创造的最复杂的系统之一,一块手指大小...

21710
来自专栏技术博文

1.[Yii]框架安装与介绍

1.简单了解Yii框架 Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用开发所需要...

30412
来自专栏技术博客

编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]

  自从.NET出现后,关于CLR异常机制的讨论就几乎从未停止过。迄今为止,CLR异常机制让人关注最多的一点就是“效率”问题。其实,这里存在认识上的误区,因为正...

772
来自专栏数据小魔方

左手用R右手Python系列之——表格数据抓取之道

在抓取数据时,很大一部分需求是抓取网页上的关系型表格。 对于表格而言,R语言和Python中都封装了表格抓取的快捷函数,R语言中XML包中的readHTMLTa...

4026
来自专栏应用案例

IT面试干货:PHP面试题汇总及答案

随着近两年来互联网潮流的发展,不少人选择php程序开发的学习。所以今天济南IT培训优就业的老师将与大家一起聊一聊PHP面试会问什么?、 ? PHP程序员经典面试...

2759
来自专栏指尖下的Android

由单例模式的双判空所展开的思考

相信很多朋友对于单例模式都很熟悉,一般常见的就七八种,百度一大堆,这里聊一下双判空情况下的单例模式。 双判空单例是由单判空所演变而来的,是原来的一些程序员为了...

661
来自专栏LuckQI

Java核心技术讲解学习

1012
来自专栏腾讯Bugly的专栏

那些年,我们一起写过的“单例模式”

本文来自:“天天P图攻城狮”公众号(ttpic_dev) 题记 度娘上对设计模式(Design pattern)的定义是:“一套被反复使用、多数人知晓的、经过分...

4114

扫码关注云+社区