Watch Star Fork

helyho / VoovanJavaApache-2.0

2017-08-18 12:26
116083_helyho helyho

本次更新带来: 44项新增内容, 76项优化内容, 39项问题修复

Voovan 3.0.0 新特性:

Web模块:

  • WebServer 对注解形式路由的支持, 类似一个轻量化的 Spring MVC
  • WebServer 增加热部署支持, 修改类和 jar 中的类,无须重启 web 服务
  • WebServer 增加扫描新类和 jar 到 ClassPath 的支持,新增类和 jar 无须重启 web 服务
  • WebServer 路径变量抽取算法优化, 以获得性能提升
  • WebServer 路径变量支持通过'_' 和 '-' 来进行变量分
  • WebServer 实现基于 redis 的 session 共享形式的集群
  • WebServer 提供对基于 Websocket 协议的 socket.io 和 engine.io 的支持

Network 模块:

  • 提高了 Voovan 对于并发性能的支持,测试结果并发性能提升为10%-15%
  • 优化ByteBufferChannel增加 shrink \ read \ write 的通用方法
  • IoSession 的状态模型重构
  • 增加心跳控制

Common 模块:

  • 新增时间轮定时任务,并且支持异步任务的方式,Voovan 内部所有定时器全部都替换为时间轮的方式,以提升性能

  • 增加了动态编译以及沙盒对于加载类的安全控制

    - 动态类的的支持,参见:org.voovan.tools.compiler.clazz.DynamicClass
    - 动态函数的的支持,参见:org.voovan.tools.compiler.function.DynamicFunction
    - 动态编译部分的沙盒安全支持: /Voovan/Common/src/main/resources/sandbox.properties
    
  • 提供通用的热部署支持,使任何 JVM 应用都能够支持热部署, 参见: org.voovan.tools.hotswap.Hotswaper

更新详情

  • 新增

    • add: 为 WebServer 增加 --config 参数,用于指定配置文件
    • add: 增加了org.voovan.http.server.RedisSessionContainer类用于启动 Redis 进行 Session 共享
    • add: 基于 Redis 的 Map 简单实现,key 和 value 都是 String 类型
    • add: 为注解路由增加了单例模式的通过@router (singleton = true)可将路由对象设置成单例模式
    • add: 注解路由新增 Body 以便在 Restfu 开发中,可以直接取请求的报文
    • add: WebServer对注解形式路由的支持, 类似一个轻量化的 Spring MVC
    • add: WebContext新增RouterScanPackage配置,用于指定扫描注解路由的包
    • add: WebServer 增加热部署支持 add: WebServer 增加扫描新类和 jar 到 ClassPath 的支持
    • add: TEnv 新增 getClassModifyTime方法
    • add: HttpDispatcher增加getRoutes方法
    • add: WebSocketDispatcher增加getRoutes方法
    • add: WebServer增加getHttpRouters/getWebSocketRouters两个方法
    • add: WebServer增加isServing判断监听是否正常
    • add: 增加 WebServer 通过配置方式配置 WebSocket 路由支持
    • add: TString 增加 doRegex 方法,返回正则的 Matcher 对象
    • add: WebServer的路径变量支持通过'_' 和 '-' 来进行变量分割
    • add: TString 增加 doRegex 方法,返回正则的 Matcher 对象
    • add: WebServer的路径变量支持通过'_' 和 '-' 来进行变量分割
    • add: 增加时间轮定时任务功能HashWheelTimer
    • add: 时间轮定时任务增加了异步任务的方式
    • add: 增加 engine.io 的支持 add: 增加 socket.io 的支持
    • add: 增加 TString.split 解决原生类对于两个分割符,无法分割出有效数据的问题
    • add: 增加了热部署的支持
    • add: 增加了沙盒对于加载类的安全控制
    • add: SandboxControler和SandboxSecurity类为动态编译部分提供沙盒进行安全性加强
    • add: 为动态编译的内容增加了沙盒进行安全控制
    • add: 增加了DynamicCompilerManager用来对动态类和动态函数进行管理
    • add: 增加了不同名称动态函数的相互引用
    • add: TString 增加了快速替换方法 fastReplaceAll
    • add: 增加 WebSocketFilter 类, 为 WebSocket 的异步通信增加过滤器的支持
    • add: 增加 WebSocketFilter 类的 字符串实现 StringFilter 类
    • add: 将 WebSocket 通信进行抽象化,抽象出 WebSocketSession,新增WebSocketSession类
    • add: 为WebServer增加非阻塞启动方法 syncServe
    • add: AioServerSocket, NioServerSocket, UdpServerSocket提供非阻塞的 syncStart 方法
    • add: IoSession 增加getAttributes方法,用于获取全部属性
    • add: 为DynamicCompiler类新增getClazz放用于获取在内存中编译的源码的 Class 对象
    • add: 新增 DynamicClass 类,用于动态编译 class
    • add: 为 DynamicFunction 新增增加预导入包功能
    • add: 为 DynamicFunction 新增包定义功能
    • add: 为 DynamicFunction 新增是否启动代码中的类导入功能的配置,用以增强安全性
    • add: 为 DynamicFunction 增加脚本文件的支持
    • add: 为 DynamicFunction 脚本文件增加在动扫描并重新编译的支持
    • add: 新增动态函数调用类 DynamicFunction
    • add: Complier.getDiagnostics 来获取诊断信息
  • 优化

    • imp: 修复了WebServerHandler在扫描过程中的空指针的问题
    • imp: 注解路由测试类注释优化
    • imp: 将注解路由重构成模块的形式
    • imp: 兼容 SIO 解析时没有消息序号导致的异常
    • imp: TFile的scanJar/scanFile 方法优化
    • imp: TEnv的getDirectorClass/getJarClass 方法优化
    • imp: HttpDispatcher 异常信息对换行进行 HTML 化处理
    • imp: HttpRequest的parameters属性为了保证参数的顺序修改成LinkedHashMap类型
    • imp: 类 Hotswaper 优化
    • imp: HttpDispatcher的Comparator导致的查找等动作的异常
    • imp: WebSocketDispatcher的Comparator导致的查找等动作的异常
    • imp: 优化TEnv的getJarClass/getDirectorClass方法
    • imp: 优化 scanFile 对于匹配的正则为空的优化
    • imp: 优化TReflect.isSystemType方法
    • imp: TReflect增加classChecker,用以检查类的是否继承某个类,实现某个接口, 以及采用了那个注释
    • imp: WebServer的路径变量抽取算法优化
    • imp: WebServer的路径变量抽取算法优化
    • imp: 修复 javadoc 问题
    • imp: 将 TFile.getJarClass/getDirectorClass/searchClassInEnv三个方法移动到 TEnv
    • imp: 将 TEnv.loadBinary/loadJars 合并到 addClassPath 方法 add: TEnv 新增classToResource/resourceToClass方法,用户将资源路径和类限定名直接进行转换
    • imp: 优化 WebServer 会话性能
    • imp: 优化 WebServer 中的定时器配置
    • imp: 优化 HttpMessageSplitter,并进行了非 Http 请求丢弃的处理
    • imp: 优化 HashWheelTask,增加 cancel 方法,用于取消任务
    • imp: 将Voovan 中所有的定时任务采用HashWheelTimer取代,提升性能
    • imp: 初步实现了一个 HashWheelTimer
    • imp: 为 engine.io 和 socket.io 增加 getEIOSession 和 getSIOSession 方法
    • imp: 去除WebSocketRouter中无用的 WebSocketSession 参数
    • imp: WebSocketSession增加getLocation和 getHttpSession 方法
    • imp: 修复 ByteBufferChannel 重构后的异常
    • imp: 优化ByteBufferChannel增加 shrink \ read \ write 的通用方法
    • imp: 异步通信框架reStart方法重命名为restart, 并新增了RestartException异常 imp: IoSession 的状态模型重构
    • imp: 优化了 Socket 服务接受连接时的性能
    • imp: 优化了创建 Socket 时的性能
    • imp: 优化了 WebServer 对于路径的匹配规则
    • imp: 使整个 Voovan 功能能够无修改在 JDK1.7下编译通过
    • imp: 优化了 WebServer 对于路径的匹配规则
    • imp: 使整个 Voovan 功能能够无修改在 JDK1.7下编译通过
    • imp: 优化WebServer对路径的判断逻辑
    • imp: HttpClient 的 WebSocket 优化
    • imp: 异步通信的同步handler(SynchronousHandler)优化
    • imp: 为 UdpServerSocket 接受的连接增加 onConnect 和 onDisconnect 事件
    • imp: 优化 WebSocket 的过滤器
    • imp: 深度性能优化,并发能力大幅度提升
    • imp: ByteBufferChannel.get方法 修改成 jdk 惯用方法
    • imp: 优化异步高并发通信性能
    • imp: 增加 AioSocket/NioSocket/UdpSocket 的 reStart 方法用于重连当前连接
    • imp: 增加心跳控制
    • imp: 规整所有的编码操作到 EventProcess.sendMessage
    • imp: 增加了 onIdle 事件
    • imp: 对于热部署的监控范围控制在 JVM 加载的内容,提高效率
    • imp: 热部署增加对 jar 包内变更文件的部署
    • imp: 优化了日志排版,增加了对前景北京颜色的配置支持
    • imp: 优化 TReflect.invokeMethod 返回范型 imp: 优化 DynamicCompilerManager 返回范型
    • imp: 优化了日志 Logger.simple的展示效果
    • imp: 优化了 MultiMap 为线程安全
    • imp: TEnv.loadBinary 关于 ClassLoader 的选择
    • imp: 移除 TFile.scanFile 的异常
    • imp: 动态编译使用独立的 ClassLoader
    • imp: Logger 中对于异常显示修改成有异常描述的进行输出
    • imp: 为了解决长连接连接数的限制,增加了线程池线程数量的设置
    • imp: 优化了WebSocket发送时的异常处理
    • imp: 为 WebSocket 增加会话属性
    • imp: 为 WebSocket 增加getRemoteAddres() 用以获取对端 IP
    • imp: 为 WebSocket 增加getRemotePort() 用以获取对端端口
    • imp: 优化了异步通信的模型,对发送部分进行优化
    • imp: 对应 WebSocketDispatcher 进行了优化创建事件触发函数
    • imp: 规整了日志代码
    • imp: HttpClient 对于WebSocket连接包的支持
    • imp: 优化了DynamicClass.java的 getName 方法,用于获取完名称标定动态编译的 class
    • imp: 重构 WebServer 一些状态参数的代码, 使其统一便于维护
    • imp: 优化 DynamicFunction 文件构造函数不在传入命名,直接使用文件名作为名称
    • imp: 修改 org.voovan.tools.compiler 为 org.voovan.tools.compiler
    • imp: 优化 DynamicFunction.addPrepareArg 方法参数类型使用 Class 来表示
    • imp: 修改DynamicFunction类的包路径
    • imp: Complier 重命名 DynamicCompiler
    • imp: 优化了 JavaMemClass的读取类进 JVM 的方法

修复

  • fix: 修复 TreeMap.containsKey 的 bug
  • fix: 修复TrasnferSplitter类名的拼写错误
  • fix: 修复TrasnferSplitter类名的拼写错误
  • fix: 修复了 UDP 通信在本次优化中出现的 bug
  • fix: 优化sessionTimeout设置小于0没有判断带来的
  • fix: imp: WebServerConfig增加hotSwapInterval/scanRouterInterval/scanRouterPackage三个属性,说明请查看/conf/web.json
  • fix: TString的 toObject 方法在使用基本类型时返回 null 的问题
  • fix: 修复loaclAddress拼写错误,修正为localAddress
  • fix: 修复了心跳在并发时出现的消息异常的问题
  • fix: 修复了putValue每次都新建一个 List 的问题
  • fix: 修复 WebServerFilter 的 ByteBufferChannel已释放导致的异常
  • fix: 修复 WebSocket 心跳消息线程不释放导致的异常
  • fix: 修复 HttpDispatcher 和 WebSocketDispatcher 相同长度路由会覆盖旧路由的问题
  • fix: 修复WebSocketFrame.toString 方法的
  • fix: TByteBuffer.moveData的异常
  • fix: 修复了 SSL 下心跳不正常的问题
  • fix: 修复了 TByteBuffer.indexOf 会导致 ByteBuffer 数据发生改变的问题
  • fix: 修复了心跳类的取失败次数的函数的拼写错误 优化了日志类
  • fix: 修复 HttpParser 部分 情况下解析完成后没有清理尾部标识的 bug
  • fix: 处理 onRecive 被连续触发的问题
  • fix: enabledMessageSpliter(true) 还会触发 onRecive 事件的问题
  • fix: 修复 ByteBufferChannel.get方法的异常
  • fix: 修复了 SSL 读取大包时的问题
  • fix: 修复 NIO 下不停触发 IDLE 事件的问题
  • fix: 修复写入文件也带有作色信息,除了给控制台的输出,其他全部都没有作色信息
  • fix: 按照 Maven 和 javadoc 修复一些次要异常
  • fix: 修复了总包不能作为 JavaAgent 的问题
  • fix: 修复反射中newInstance和 invokeMethod 对于参数为空的异常处理
  • fix: 修复 TSQL.getSQLString函数的空值问题
  • fix: 修复异步通信因尝试关闭导致的死循环
  • fix: 修复 WebSocket 的 PONG 响应的性能问题
  • fix: 修复同步启动,后发送消息是 SSL 的握手并未完成的 bug,现在的同步启动会等待 SSL 完成握手
  • fix: 修复 WebServer 的空指针异常
  • fix: SSL通信因为握手和发送消息异步,导致的握手失败问题
  • fix: HttpClient WebSocket 在 统一状态参数码后不能正常工作的问题
  • fix: 修复 HttpClient 收到 ping 后发送的 pong 数据不带标签的问题
  • fix: 修复ByteBufferChannel.readLine 在连续两个\n 换行导致的死循环问题
  • fix: 修复Complier.getClassNameFromCode 对于继承类或者实现接口时解析异常的问题
  • fix: 修复 TReflect.invokeMethod 对 null 参数不支持的问题
  • fix: 修复 TReflect.invokeMethod 对 byte[] 参数不支持的问题
  • fix: TString.fastReplaceAll关于替换字符串的 bug
最后提交信息为: 更新 Readme.md

搜索帮助