Chapter 2 软件开发平台与软件系统架构 之 JAVA
JVM的框架结构和解释执行代码流程
jvm包括
J2ee 框架
注意LDAP目录服务协议和JNDI(java名字和目录服务接口)架构(如对象上传和下载、目录搜索),RMI协议(远程调用),HTTP扩展的SOAP协议(以xml为中立化信息交换语言),三层(服务层(EJB),中间层,web层...)
Servlet 和 HttpServletRequest, RequestDispatcher(包含其他Servlet或重定向http request URL), HTTPSession(为无状态的http协议定义和管理会话机制,该机制跨越HTTP请求完成信息共享),ServletContext(Servlet运行时环境) P91
Java 传递参数
传值和传地址两种。注意String一旦修改就会重新申请内存并拷贝,所以String做参数时相当于传值。
Java 反射机制:
JVM为每个加载(即类字节码Load进JVM)的类SomeClass生成一个特别的Class类实例 XXX。
对象SomeClassObj运行时可利用基类Object提供的方法getClass()获取该特别的实例 XXX; (Class XXX=SomeClassObj.getClass). 另外Class类还提供了静态函数forName(String),给定类SomeClass的名字,可以返回该类对应的Class类实例XXX。( Class XXX = Class.forName("SomeClass") )
这个特别的Class类可以动态地创建对应的类的实例:XXX.newInstance()将创建XXX对应的类SomeClass的实例。
Java 对象序列化技术
注意JDK/JRE会为实现了Serializable的类生成一个UID,相当于hash值,用于鉴别一个序列化的对象是不是属于某类。
Java 线程
Java线程不是内核级别的线程,而是Jvm解释运行环境自己提供的一种用户级别线程,所以它对cpu是不可见的。cpu只能看到它所在的jvm进程,后者才是内核级别线程/进程。
1 继承Thread。 注意Thread其实实现了Runnable接口; 2 自定义一个类,实现Runnable接口。
Java并发控制(同步)
采用等待唤醒机制,划分出主(调用notify唤醒从线程)从(调用wait阻塞自己,等待唤醒)线程,优于锁机制。
wait/notify必须在synchronized(anObj)块内,意味着执行这些操作前,必须获得anObj的对象锁,从而保证这些操作之间的互斥。此外一个线程调用wait时,会释放anObj的锁,防止死锁。从wait返回时,需要再次获得锁才能继续执行。主线程调用notify并退出synchronized块之后从线程才能真正从wait返回,即被唤醒。