Classpath还没有死... Alexis Hassler尚未完成

类路径已死!

—马克·雷诺德

无论如何,类路径是什么? 在任何代码中,基本上都有两种类:来自JRE的类和不归类的类(因为它们是您自己的自定义类,或者因为它们来自3rd-party库)。 可以通过-cp参数通过简单的Java类加载来设置类路径,也可以通过嵌入式MANIFEST.MF通过JAR来设置类路径。

一个类加载器本身就是一个类。 它可以加载资源和类。 每个类都知道其类加载器,即哪个类加载器已在JVM中加载了该类( sun.misc.Launcher$AppClassLoader )。 JRE类classloader 不是 Java类型,因此返回的classloader为null 。 类加载器被组织为父子层次结构,如果在当前类加载器中未找到类,则从下到上进行委派。

BootstrapClassLoader可以分别用-Xbootclasspath-Xbootclasspath/a-Xbootclasspath/p替换,附加或前置。 这是重写标准类(例如StringInteger )的好方法; 这也是一个主要的安全漏洞。 使用风险自负! 背书目录是一种使用较新版本覆盖某些API的方法。 例如,对于JAXB就是这种情况。

ClassCastException通常来自两个不同的类加载器(或更多类加载器)加载的同一个类。 这是因为类不是仅在JVM中由类标识,而是由元组{classloader,class}标识。

可以开发Classloader,然后在提供的层次结构中进行设置。 通常,这是在应用程序服务器或工具(如JRebel)中完成的。 在Tomcat中,每个Web应用程序都有一个类加载器,并且有一个用于Tomcat的父级统一类加载器(以System类加载器作为其父级)。 没有什么可以阻止您开发自己的:例如,考虑一个MavenRepositoryClassLoader ,它从本地Maven存储库加载JAR。 您只需要扩展UrlClassLoader

JAR地狱来自于依赖管理,或者更确切地说,它缺乏依赖。 由于依赖关系在开发期间像树一样,但是在运行时( 在类路径上)完全平坦,因此如果不事先消除依赖就可能发生冲突。

问题之一是JAR可见性:如果存在JAR,则所有类都可用,如果不存在,则没有。 粒度处于JAR级别,而具有更细粒度的可见性会更好。 有几种解决方案:

  • 自1999年以来,OSGi一直致力于解决这些问题。有了OSGi,JAR成为捆绑包,并且JAR清单中设置了其他元数据。 这些元数据描述每个程序包的可见性。 从纯粹的依赖关系管理角度来看,OSGi附带了一些其他功能(服务和生命周期), 我个人*不同意* ,这些功能似乎有些过时了
  • Project Jigsaw还以模块的形式提供了这种模块化(以及JRE类模块化)。 不幸的是,它从Java 7开始就被延迟了,并且不会包含在Java 8中。现在最好忘记它。
  • JBoss模块是一个受Jigsaw启发并基于JBoss OSGi的JBoss AS 7子项目。 它已经可用,并且比OSGi具有更低的复杂性。 通过module.xml描述文件进行配置。 该系统包含在JBoss AS 7中。从消极的方面讲,您可以将Module与JBoss一起使用,也可以单独使用,这使我们无法在Tomcat中使用它。 正在进行的Github 概念验证可实现此目标,它将JAR模块嵌入已部署的Web应用程序中,并覆盖Web应用程序的Tomcat类加载器。 仍然存在几个问题:
    • 伪影不是模块
    • 缺乏文件

用Martin Gorner的 CSS3,SVG,Canvas和WebGL对HTML5页面进行动画处理

仅在HTML5规范内,就有4种方法向页面添加有趣的动画。

CSS 3

CSS 3过渡通过transition属性来实现。 它们通过用户事件触发。 animation是通过animation属性实现的。 注意复数,因为您定义了关键帧,浏览器计算了中间的关键帧。 2D变换-属性transformation包括rotatescaleskewtranslatematrix 。 作为建议,可以忽略计时,但是默认计时是相当不错的。 CSS 3还提供3D转换。 这些与上面相同,但是在值名称后附加XYZ以指定轴名称。 CSS 3的最大缺陷是它们缺少绘制功能。

SVG + SMIL

SVG不仅提供矢量绘图功能,还提供开箱即用的动画功能。 SVG用XML描述:SVG动画比CSS 3强大得多,但也更复杂。 最好使用Inkscape之类的工具来生成SVG。通过子标签可以为SVG设置动画的方式有多种: animateanimateTransformanimateTransform而CSS 3定时默认是可接受的SVG中的s是线性的(这对眼睛不愉快)。 SVG通过先前标记的keySplines属性提供定时配置。CSS 3和SVG都有很大的局限性:动画设置为固定状态,无法响应外部事件,例如用户输入。 当有这些要求时,适用以下两个标准。

画布+ JavaScript

从这一点开始,可以使用编程(而不是描述性)配置。 注意JavaScript动画是有代价的:在移动设备上,它会耗尽电源。 因此,请了解当页面不显示时让浏览器停止动画的方法。

WebGL + THREE.js

WebGL让我们使用OpenGL API(读取3D),但这是非常底层的。 THREE.js带有完善的高级API。 更好的是,您可以将Sketchup网格模型导入THREE.js。在所有情况下,请不要忘记使用与2D画布相同的优化来在画布不可见时停止动画。

为了不关心前缀,prefix.js让我们保留了原始CSS并在运行时使用prefix进行了增强。 否则,请使用LESS / SASS。 幻灯片可在相关实验室在线获得。

我记得15年前学习射线追踪时使用了相同的3D技术。 棒极了!

Josh Long的Spring更新

对话以代码段的形式显示,使得成熟的注释大部分没有意义。 它专用于最新的Spring平台版本的新功能

特征

3.1

  • XML的JavaConfig等效项
  • 个人资料
  • 使用CacheManagerCache缓存抽象
  • 除EhCache之外,更新的后端缓存适配器(Hazelcast,memcached,GemFire等)
  • Servlet 3.0支持
  • GitHub上的Spring框架代码

3.2

  • 基于Gradle的构建[ 由于不兼容的版本支持。 恕我直言,这是我可以同意的少数使用Gradle的用例之一
  • 通过Callable (线程由Spring管理), DeferredResultAsyncTask<?>异步MVC处理
  • 内容协商策略
  • MVC测试框架服务器

4

  • Groovy配置支持。 请注意,所有可用的配置方式(XML,JavaConfig等)及其组合对运行时都没有影响。
  • Java 8闭包支持
  • JSR 310(日期和时间API)支持
  • 使用内置的JVM机制删除设置@PathVariable的值需求
  • 对Java EE 7的各种支持
  • 向后兼容性仍将包括Java 5
  • 基于注释的JMS端点
  • WebSocket 又名 “服务器推送”支持
  • Web资源缓存

Bean验证1.1: Emmanuel Bernard不再是Care Bears的领地

这里要写的所有内容并不是一成不变的,必须首先得到批准。 Bean验证与Java EE 6+捆绑在一起,但可以单独使用。

在进行Bean验证之前,在每个不同的层(客户端,应用程序层,数据库)执行验证。 这导致重复和不一致。 Bean验证的座右铭是:

约束一次,随处运行

Java EE 6已发布1.0。它已与其他堆栈完全集成,包括JPA,JSF(和GWT,Wicket,Tapestry)和CDI(和Spring)。

声明约束就像添加特定的验证注释一样简单。 验证不仅可以在bean本身上进行,而且可以在嵌入式bean上进行级联。 同样,验证可以包装多个属性,以验证两个不同的属性是否彼此一致。 可以对验证进行整体设置,但也可以定义其子集(称为组)。 通过接口创建组。

现成的注释很多,但您也可以定义自己的注释。 这可以通过在自定义批注上使用@Constraint批注来实现。 它包括验证时要使用的验证器列表。 这些验证器必须实现Validator接口。

Java EE 7中将包含1.1。最重要的是要记住它是100%开放的 。 一切都可以在GitHub上获得 ,请分叉。

现在,容器完全可以控制Bean验证组件的创建,因此它们与CDI具有本地兼容性。 同样,其他DI容器(例如Spring)也可以插入其自己的SPI实现。

1.1的最大特点是不仅可以验证属性,而且可以验证方法参数和方法返回值。 构造函数是专门的方法,它也适用于它们。 它是在内部使用拦截器实现的。 但是,这需要拦截堆栈-CDI,Spring或任何AOP,并带有相关的限制,例如代理。 这样就可以进行声明式的面向合同的编程及其前置条件和后置条件。

结论

感谢组织团队的支持 ,Devoxx France 2013取得了巨大的成功。 Devoxx不仅是技术交流,还是结识新朋友,交流想法并结识老朋友的时候。

明年或在Devoxx 2013见!

多亏了我的老板hybris ,他帮助我参加了这次盛会!

翻译自: https://blog.frankel.ch/devoxx-fr-2013/3/

2013年Devoxx法国-第3天相关推荐

  1. Devoxx法国2012天3

    2012年法国Devoxx的最后一天! 醒来并不容易,我必须喝一杯咖啡才能使我前进(而且我从不这样做). Greg Truty的移动应用程序开发趋势 我没有对此做笔记,因为我的计算机重新启动了

  2. 架构探险-轻量级微服务架构_第3部分-单活动架构+一些时髦的Dagger

    架构探险-轻量级微服务架构 This series takes a basic MVP app using Retrofit and RxJava to display a list of Githu ...

  3. Devoxx Fr 2012第2天

    今天从Devoxx Fr团队的座谈会开始,总结了巴黎水罐和Devoxx法国的故事. 自豪地成为开发人员? 由Pierre Pezziardi 在某些社交场合,当被问到您在生活中做什么时,很难说您是计算 ...

  4. CoreOS容器云企业实战(3)--Docker技术实践

    0x1 Docker概述 1)Docker介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一 ...

  5. 性能测试流程_流性能

    性能测试流程 当我阅读Angelika Langer的Java性能教程时-Java 8流有多快? 我简直不敢相信,对于一个特定的操作,它们花费的时间比循环要长15倍. 流媒体性能真的会那么糟糕吗? 我 ...

  6. WildFly上具有AngularJS的Java EE 7和Java WebSocket API(JSR 356)

    这篇博客文章描述了用于WebSocket协议的Java API(JSR 356) (这是Java EE 7平台的四个最新JSR之一),并提供了部署在WildFly 8上并可以在OpenShift上在线 ...

  7. 详解优酷视频质量评价体系

    万字长文 | 详解优酷视频质量评价体系 分享嘉宾|李静博士,阿里巴巴文娱集团资深算法专家,阿里巴巴大文娱摩酷实验室视频体验与质量团队负责人 整理出品|AICUG人工智能社区 本文地址:https:// ...

  8. 《IT老外在中国》第22期:“中国餐桌”上的法式创新

    在IT界,"中国餐桌"已经吸引了全球的饭碗,当然包括Thomas vial推荐的法国军团. 对于Thomas vial来说,他所做的事情新颖而具挑战性.两个月前,Thomas vi ...

  9. 饿久了,大脑会进入“省电模式”!感官被削弱,还看不清东西丨爱丁堡大学...

    杨净 发自 凹非寺 量子位 | 公众号 QbitA 有没有想过,大脑其实跟手机.电脑一样,也有节能模式. 科学家最新发现,小鼠在长期节食的情况下,它的大脑就会进入这种模式,从而导致视觉感知的精度会变低 ...

最新文章

  1. leetcode 179. 最大数
  2. 女朋友存好多网上男明星的照片,我准备用python全部换成我的脸
  3. js请求结果拦截机器_js利用jquery的jsonp来解决ajax跨域请求被浏览器拦截结果的问题...
  4. iOS开发之UIDevice通知
  5. 接口类抽象类 封装
  6. Android中ADT和SDK的关系
  7. VO,PO,POJO的定义和区别
  8. Linux Vi 删除全部内容,删除某行到结尾,删除某段内容 的方法
  9. python如何判断字典中是否存在某个键_总结:11个Python3字典内置方法大全及示例...
  10. 日期年月日的比较以及判断
  11. ts可展开注释_TS语法之装饰器(注解)
  12. js 获取td高度_JS或jQuery获取宽高度
  13. Spring Boot面试题
  14. mil跟踪算法matlab,几种目标跟踪算法性能比较
  15. 粗谈pragma once与 #ifndef的区别
  16. eclipse 跑maven命令_maven编写命令行执行mvn package没问题,eclipse执行报错
  17. 【JS】引用类型之RegExp
  18. 压测工具ab的安装(mac环境)
  19. linux读取文件头错误,Linux系统grub常见错误问题解决
  20. 用css实现朋友圈图片布局

热门文章

  1. 巨帧(jumbo frame)
  2. 圆周率π的几种计算方法与分析
  3. Log4j2高危漏洞CNVD-2021-95914分析复现修复
  4. Android事件总线(一)EventBus3.0用法全解析
  5. 病案系统实施-基本知识-持续更新
  6. 【软件群英会】QQ群 12月1日晚上聊天记录
  7. 个人管理:放松离合与换档时刻
  8. 用最科学的方法展示最形象的图表——前端数据可视化实践
  9. python-字典练习3 -数字重复统计
  10. 怎么用python画螺旋_用Python tu绘制螺旋