是时候放弃 JavaPoet/KotlinPoet 了
相信大家对于 JavaPoet 和 KotlinPoet 并不陌生,皆出自大名定鼎鼎的 Square。一般地,我们在用 APT (Annotation Processing Toolkit) 或者 KAPT 在编译期生成源代码时,一般都会用 JavaPoet 来生成 Java 源代码,而用 KotlinPoet 来生成 Kotlin 源代码,乍一看,哇!好酷,感觉特别有逼格。
相信大家对于 JavaPoet 和 KotlinPoet 并不陌生,皆出自大名定鼎鼎的 Square。一般地,我们在用 APT (Annotation Processing Toolkit) 或者 KAPT 在编译期生成源代码时,一般都会用 JavaPoet 来生成 Java 源代码,而用 KotlinPoet 来生成 Kotlin 源代码,乍一看,哇!好酷,感觉特别有逼格。
Booster 又双叒叕发布了新的版本—— v4.6.0,本次更新内容如下:
BaseVariant.mergedNativeLibs: Collection<File>
Booster 又双叒叕发布了新的版本—— v4.5.3,本次更新内容如下:
Booster 又双叒叕发布了新的版本—— v4.5.1,本次更新内容如下:
Booster 之所以保持着高性能,除了并行 I/O 以外,还有一个很重要的方面 —— 单次 I/O。可能有人会问,什么叫单次 I/O?所谓单次 I/O 是指,在 Transform 的过程中,对于每一个输入 (JAR/DIR) ,Booster 只需要一次读和一次写,便可以实现整个 app 的字节码以流水线的方式进行处理,也就是 Bytecode Transform Pipeline。这就意味着,每个 Transformer
只有一次机会来处理 class ,但如果想要在 Transformer
先收集一些信息,再在 Transform 的过程中将这些收集到的信息,以字节码的方式写入到某个 class 中,就不太容易实现。一个典型的例子便是 SPI 优化,虽然 R8 可以对 SPI 进行化,但是,对写代码的姿势有一定的要求。
Stability is one of the three most important metrics for Coupang apps in providing a Wow customer experience. The mobile app monitoring platform aims to provide a reliable, easy-to-use, high extensibility monitoring platform for Coupang family apps. The platform supports not only mobile apps but web apps. The platform is based on the Lumberjack logging system and supports high-performance real-time stack trace de-obfuscation and symbolication within a few milliseconds (the industry standard is in hours). Thus, it is able to detect the issue within 3 mins and identify the root cause within 2 mins. Its high extensibility allows us to build more QoE/QoS metrics.
Booster 又双叒叕发布了新的版本—— v4.3.0,本次更新内容如下:
Transformer
,并同时支持 ASM 和 Javassist尽管我使用 Java 编程已有十年有余,但其实 JavaScript 才是我最早掌握的一门编程语言,虽然 C 语言是大学生的必修课,但我真不敢说在当时我已经掌握了它,在 Web 2.0 的时代,最流行的开发工具便是网页三剑客,Dreamwaver 的所见即所得让很多初学者也能写出一个可以运行的 Web 应用,我便是其中一个。
在可测试应用架构设计(一)中有介绍过 Booster 是如何解决 Transformer
在本地单元测试环境和编译环境中的复用问题,在本节中,我们来一起探索如何利用 Booster 提供的 TransformerClassLoader
来解决应用架构的可测试性问题。