{Java The Good Parts}

2024-06-15 08:48
文章标签 java good parts

本文主要是介绍{Java The Good Parts},希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Chap 1 Introduction

When talking about a program language, think about what you are using them for.

What is Java good for???

1. When I am working on a project that is either so large or complex or on a short schedule that I need to be working with other coders, Java is useful.

It allows us to break the work to smaller, independent pieces, and helps us to explain our own parts, which also aid in multiperson effort.


2. When the codes need to run on multiple platforms, Java is useful. 

Write once, run anywhere. For most part, Java bytecodes will run the same on the JVM no matter what platform. This portable binary format is an advantage if codes are going to run on multiple machines.


3. When the codes are going to be used for a long time, Java is useful. 

Java is best used on systems that are designed before they're written.


4. When codes need to be realiable, Java is useful. 

Java made design decisions that are meant to make codes more realiable.


5. When time flies, Java grows rapidly.

But there is a small part that is good and we should know.

Most changes happened in the library, with a smaller set of changes occurring in the language and very little change occurring in the VM.

We will have more views about why these parts are useful, when to use them and when to avoid other solutions.



Chap 2 The Type System

It's a paradigmatic example of what makes the language what it is - a pragmatic combination of features that provide an excellent tool for software engineers building large, complex systems.

The basis:

 Class, Method, Extend, Inherit, Override, Interface, Abstract class and Object-Oriented concepts.


Why Class, Abstract class and interface?

Interface is a user interface to programmers, and it's a way of expressing what different implementationshave in common.

The compiler can find those cases where a programmer changes the signature of a method or makes a typo in the name of the method.

Interfaces can clarify the overall design of the system.


If you cannot describe the meaning of your interface without referring to methods of some other interface, then you should split it.

The seperation between interface and class allows us to do our semantic design seperately from our class design.


Inside and Out

How the method is implemented should never be assumed by the method that receives the object, because they can always change.

Interfaces are used to define sets of interrelated operations that taken together form a unit of meaning in an application.

Classes define a set of related data, and to associate that data with the code that is used to manuplate that data.


Beware

Java interfaces do not create a seperate namespace, and there is no way to disambiguate the same methods.

All in all, the type system lets the compiler tell you when things are out of whack, and helps build units that can be shared, extended and explained.



Chap3 Exceptions

Using exceptions correctly, your code can be easier to read, more realiable, and easier to maintain.


The basics

The basic class of Throwable extends the Serializable interface, and should declare a serialVersionUID.

Any exception that is thrown by a method must be declared as part of the signature of that method.

Throwing Exception is a bad idea!


The Why

When bad things happen, we need to react by cleaning up and aborting the operation.

The exception mechanism allows a program to separate the mainline code and the error-handling code.

If you want to ignore exceptions, you have to do so explicitly. 


How it Works

If an exception occurs, do some clean-up works, so write some exception handlers.

The RuntimeException can be thrown at any time and does not need to be declared as part of the signature of a method.

Don't declare a new RuntimeException.

He believes that the use of RuntimeException is a bad thing. And recommand us to write our own exceptions.


Chap 4 Packages

The package feature along with the notion of importing from other package allow large-scale software to be developed independently.


The Basics

Create a namespace, to help distinguish the same names in different packages.

Once some class with a name is loaded, any class with the same name will use the loaded implementation.

Using domain name or java, javax, email address.

Don't put codes in default package.

Avoid importing all *.


Packages and Access Control

Private, protected, package, public.


Chap 5 Garbage Collection

So far, we know Java define a type (class or interface), define and handle an exception (and tell others when to expect), create a package that both defines a separate namespace and interacts with the protection mechanisms to give you a layer of abstraction.


The basics

Runtime system keeps track of when an object will no longer be used and automatically frees up the memory space taken up by those objects.

It's difficult to keep track of when and how to clean up the memory used by objects.


GC and references:

You can not access reference itself, you cannot do arithmetic with a reference, all you can do is to access fields or methods of the object.

GC needs the system to know the difference between references and other forms of data, pointers are like integers.

GC depend on the observation that most objects are short-lived and it keeps new object and old object heeps, so can save time by not collect old objects too regularly.

GC helps to write program without memory leak and more secure.

Memory leak because you leave a reference hanging around in some other object when the reference is no longer needed.

The places that a reference might be stored are potential area for memory leak.



Chap 6 JVM

JVM changes the way we have to think about buillding large systems and made the job much easier.

JVM presents an abstraction of both the hardware and OS to the programmer.

JVM was always meant to be a development and runtime platform for new code, written in Java language.

Each source file will generate at least a single bytecode file. JVM then load the file, and interpret and run the bytecodes.


JVM enhanced security, this layer has a lot of checks on the code, and isolates the code further from other code running on the physical machine. It verifies all the code run in the JVM before loading the code.


At first, JVM wants to make sure fewer bugs in embedded systems.


JVM has a portability. But we need to use abstractions provided by the JVM.


Chap 7 Javadoc

We write document comments to be read by Javadoc and be turned into HTML files.

Encourage uses to rely on the documented features and not on implementation details.

A good rule of system development is to write the Javadoc for the interfaces first, and then use that documentation as a form of specification for any classes that implement the interface.


Chap 8 Collections

Java frees coders from this level of building. 

Set doesn't guarantee the order of elements stored in it when do iteration.

When need to access the whole collection, return a copy is a good idea.

The idea behind Generics: we can have variables in some declarations that vary over types rather than instances of types.

1. the casting of objects still exist, and the compiler will help us.

2. type safety for parameterized types can only be ensured over a compilation unit.

Collections are useful, and generics is for type safety, UnsupportedOperationException is for simplicity.


Chap 9 Remote Method Invocation and Object Serialization

Breaking a system apart have advantages: independence of failure, security through isolation of parts, and the ability to change parts without interrupting the overall system.

RMI and serialization are good parts.

RemoteException have nothing to do with the way a program is written, but with the environment in which the program is run. A more comman reason is a class-loading failure on the part of the registry.

The object serialization system converts a java object into a linear string of bits that can be sent over the wire and converts a well-formed stream of bits into an object.

More accurately, it will convert a graph of objects, rooted in some particular object, into such a stream.



Chap 10 Concurrency

Take advantages over multi-cores.

Always pay attention to thread safety, whether the library you use or the codes you write are thread-safety.

The atomic data items are very useful when you need to implement a multithreaded counter or need to make some comparison in a routine that might have multiple threads running through it. 



Chap 11 The Developer Ecology

IDE

JUnit (Assert, expected, it makes writing great tests easier and assemble into suites, and run)

FindBugs (static analysis tool, it looks binary output of source code and operates on Java bytecodes, finding the likely bug patterns in that presentation, it's a final check and we can see the source codes and inner thoughts)

Other tools (Checkstyle: automate the checking of stylistic features of your code, can help team style.)

You can save a lot of time and energy by finding existed libraries and codes to help you.


这篇关于{Java The Good Parts}的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062977

相关文章

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.