Java语言是一种静态类型的编程语言。静态类型的含义是指在编译时进行类型检查。Java源代码中的每个变量的类型都要显式地进行声明。所有变量、方法的参数和方法返回值的类型在程序运行之前就必须是已知的。Java语言的这种静态类型特性使编译器可以在编译时执行大量的检查来发现代码中明显的类型错误,不过这样的话,代码中会包含很多不必要的类型声明,使代码不够简洁和灵活。与静态类型语言相对的是动态类型语言,如javascript和Ruby等。动态类型语言的类型检查在运行时进行。源代码中不需要显式地声明类型。去掉了类型声明后,使用动态类型语言编写的代码更加简洁。近年来,动态类型语言的流行也反映了语言中动态行的重要性。适当的动态性对于提高开发的效率是有帮助的,可以减少开发人员需要编写的代码量。
 
对于使用java的开发人员来说,学习一门新的动态类型语言的代价可能比较高,因为从一门新语言入门到将其真正运用到实践中的时间可能比较长。熟悉Java的开发人员还是都希望用Java来解决问题。实际上,Java语言本身对动态性的支持也有很多。这里的动态性指的不是类型上的,而是使用方式上的。这些动态性可以在一些对灵活性要求比较高的场合发挥作用。反射API就是其中一个很好的例子,它提供了在运行时根据方法查找并调用方法的能力。随着版本的更新,Java语言本省也在不断地提高对动态性和灵活性的支持。
 
本章将围绕Java语言的动态性来展开,所涉及的内容既有Java 7中的新特性,又有之前版本中就有的功能。集中在这一章进行介绍的目的是使读者对相关知识有一个全面的了解。本章所介绍的内容都属于Java的标准API,不需要了解字节代码等底层细节。这一章的内容分为4个部分:首先介绍Java 6中引入的脚本语言支持API,接着介绍可以在运行时检查程序内容部结构和直接调用的方法的反射API,然后对可以在运行时实现接口的动态代理进行详解,最后是本章的重点,即Java 7中引入的在Java虚拟机级别实现的动态语言支持和方法句柄。

《深入理解Java 7核心技术与最佳实践》读书笔记(2) Java语言动态性引言的更多相关文章

  1. java7:核心技术与最佳实践读书笔记——对象生命周期

    流程:字节码文件(.class) -> 类加载 -> 类链接 -> 类初始化 -> 对象初始化 -> 对象创建 -> 对象使用 -> 对象回收 . 1.Jav ...

  2. java7:核心技术与最佳实践读书笔记——类加载

    流程:class -> 加载 ->  jvm虚拟机 -> 链接 . 一.类加载器概述 1.引出      类加载器也是一个java类,java.lang.ClassLoader类是所 ...

  3. java7:核心技术与最佳实践读书笔记——字节代码格式

    一般流程:开发人员写出java源代码(.java) ->  javac(编译器) -> java字节代码(.class) -> 加载 -> java虚拟机(jvm)运行. 1. ...

  4. php核心技术与最佳实践(笔记一)

    1.1面向对象的型与本 类是对象的抽象组织,对象是类的具体存在. 1.1.1对象的形 <?php class Person{ public $name; public $gender; publ ...

  5. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  6. 《深入理解OSGi:Equinox原理、应用与最佳实践》笔记_1_运行最简单的bundlehelloworld

    <深入理解OSGi:Equinox原理.应用与最佳实践>笔记_1_运行最简单的bundlehelloworld 买了周大大的OSGI的书看 先前完全没有基础 就靠这本书看看学学 顺便记一些 ...

  7. 温习《PHP 核心技术与最佳实践》这本书

    再次看这本书,顺手提炼了一下大致目录,以便后续看见目录就知道大概讲的些什么内容 PHP 核心技术与最佳实践 1.面向对象思想的核心概念 1.1 面向对象的『形』与『本』 1.2 魔术方法的应用 1.2 ...

  8. paip.java gui swt/jface 最佳实践

    paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...

  9. paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah

    paip.提升性能--多核编程中的java .net php c++最佳实践  v2.0 cah 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax ...

随机推荐

  1. linux下虚拟主机配置

    <VirtualHost *:80>ServerAdmin  admin@localhostServerName   www.baidu.org DocumentRoot "/d ...

  2. JavaScript权威指南--闭包讲解摘记

    不积跬步无以至千里,不积小流无以成江河. 关于闭包的解释,在<JavaScript权威指南>中讲的很透彻了.今天看了书中的一个段讲解,更加深了对闭包的理解,特此记下,以备查阅. 在同一个作 ...

  3. window.open 设置高和宽无效

    当设置_self属性时,再设置宽和高就不管用,这个宽高会继承父窗口的宽高! window.open("url","_self","width=100, ...

  4. element -validateField校验提示

    <el-form :model="numberValidateForm" ref="numberValidateForm" :rules="ru ...

  5. webstorm中.vue报错(es6语法报错)-转

    1.webstorm中es6语法报错,解决方法: 打开 Settings => Languages & Frameworks => Javascript把 Javascript L ...

  6. C# Linq 查询数据库(DataSet)生成 Tree

    效果图如下 cs代码 using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  7. Zookeeper如何正确设置和获取watcher

    Watcher 设置是开发中最常见的,需要搞清楚watcher的一些基本特征,对于exists.getdata.getchild对于节点的不同操作会收到不同的 watcher信息   state=-1 ...

  8. 用LaTeX画树形结构

    用LaTeX画树形结构,比如:文件目录树形图,程序中函数调用关系图等. 找到的一个不错的资源: http://www.texample.net/tikz/examples/feature/trees/ ...

  9. jdk 动态代理 数据连接池

    package com.itheima.datasource; import java.io.PrintWriter; import java.lang.reflect.InvocationHandl ...

  10. [Android]对字符串进行MD5加密

    /** * 将字符串转成MD5值 * * @param string * @return */ public static String stringToMD5(String string) { by ...