Tag: jvm

Supervisord:监视和交互正在运行的JVM应用程序

需要什么: 短: 在常规intervall中查询jvm进程的状态,如果不满足某些条件,则重新启动进程。 长 我们目前有一个长期运行的kotlin应用程序,它监视一个web套接字。 这个应用程序是通过在Linux上的supervisord启动的。 我们希望通过事件类型TICK_3600不时地使用Supervisord“Event Listeners”来查询正在运行的jvm应用程序的状态。 所以可以说,我们想检查,如果超过100个项目在最后一小时(TICK_3600)处理。 如果不是这种情况,我们希望平稳地重新启动应用程序,因为它会执行一些异步数据读写操作,并且随机关机可能会导致数据丢失。 什么是不需要的: 我们不需要应用程序的复杂度量,如Prometheus或Grafana出口商AppPerfect等。 理念: 启动应用程序时,使用java.nio.channels启动套接字观察器。 在常规的intervalls上,然后通过supervisord查询该socket观察器,然后检查条件是否满足,如果条件不满足,则重新启动应用程序。 问题: 如何通过supervisord监控正在运行的应用程序 – Does monitoring the application like this make sense at all? – Is it decent to good practice – If not: What would be alternatives 安全问题 – The Ports should only be accessible from localhost – Would it […]

将Kotlin .class文件打包到JAR中执行

在关于“Kotlin – 编译并从Windows命令行运行”的教程之后,有一个缺失的清单: thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ ll total 32 drwxr-xr-x 2 thufir thufir 4096 Oct 27 08:29 ./ drwx—— 46 thufir thufir 16384 Oct 27 08:03 ../ -rw-r–r– 1 thufir thufir 107 Oct 27 08:29 HelloWorld.kt thufir@dur:~/kotlin$ thufir@dur:~/kotlin$ kotlinc HelloWorld.kt -include-runtime -d HelloWorld.jar WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by […]

使用Kotlin的数字操作是否像Java原语一样快?

Java有原始语言,因为使用它们会导致比基于类的对应语言更高效,可读和更少错误的代码 。 Kotlin是否执行编译时优化以确保编号操作与Java基元相同(或更好)的性能?

Android上的纯功能编程

这方面有什么进展吗? 我希望能够用Haskell或类似的语言在Android上编写纯粹的功能代码。 我已经尝试了一些与斯卡拉的例子,但似乎是一个开始的痛苦。 是否还有其他可用于编写Android应用程序的功能性JVM语言? 编辑:编写原生android应用程序的函数式语言。 我关于JVM的错误。

与Java SAM没有2.12 M2标志的Scala互操作

有没有使用Java @FunctionalInterface / SAM / lambda表达式的Java-8 API编写Scala代码的公认技巧? 虽然Java lambda表达式inter-op在M2 http://www.scala-lang.org/news/2.12.0-M2中的一个标志下是可用的,但我更希望类/ AnyVal解决方案可能与scala一起工作功能X特点。 不幸的是,scala.FunctionX扩展AnyRef而不是Any,所以不能使用/混合这些特性到隐式的AnyVal类实现中。 补充:我不完全相信,即使scala.FunctionX是全球特征(从任何延伸)我如何实现我的目标。 我的用例是这样的: 在我的一个项目中,我选择了像Java Stream接口和类一样提供一个带有FunctionalInterfaces的Java-8 API,以便迎合尽可能广泛的基于JVM的客户端语言,例如Closure,Scala和Kotlin。 对于使用我的Java-8 API的每种客户端语言,如果在访问Java-8 API时,我将编写适当的绑定(如果需要的话)以使用特定于语言的习惯用法。 顺便说一句。 我也会对在Kotlin-Java互操作环境中提出的这个问题的任何评论感兴趣。

我的Kotlin项目无法解决Travis-CI上的依赖关系

我试图将我的Kotlin项目与Travis-CI集成,无法生成一个成功的构建,我得到消息说我的gradle没有找到存储库… 存储库在我的文件build.gradle version '1.0-SNAPSHOT' buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.0-beta-4584" } } apply plugin: 'java' apply plugin: 'kotlin' sourceCompatibility = 1.5 repositories { mavenCentral() maven { url "http://repository.jetbrains.com/all" } } dependencies { testCompile 'org.spek:spek:0.1.188' compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.0-beta-4584" testCompile group: 'junit', name: 'junit', version: '4.11' } 我的Travis非常简单 language: java 收到的消息是 FAILURE: Build failed with an exception. * […]

非常神秘的运行时错误:堆栈上的错误类型操作数

我得到这个非常神秘的错误: java.lang.VerifyError: Bad type on operand stack Exception Details: Location: org/bh/tools/base/strings/TestUtils.concat(Ljava/lang/Object;Ljava/lang/CharSequence;)Ljava/lang/CharSequence; @28: invokevirtual Reason: Type 'java/lang/Object' (current frame, stack[1]) is not assignable to 'java/lang/String' Current Frame: bci: @28 flags: { } locals: { 'java/lang/Object', 'java/lang/CharSequence' } stack: { 'java/lang/StringBuilder', 'java/lang/Object' } Bytecode: 0x0000000: 2a12 59b8 0012 2b12 43b8 0012 2ac1 005b 0x0000010: 9900 1a2a bb00 […]

可视范围项目/模块

我有两个在Android Studio中链接的项目/模块。 其中一个作为一个Api /核心,我需要某些类只能从这个模块访问,但从所有的包(所以“默认”在这种情况下是无用的)访问。 但似乎在Java中它不是像内部(C#,SWIFT)的修饰符。 “模块”修改器是为Java 7提出的,但没有实现。 那么,是否有任何方法可以保护模块的类别不受外界影响,而不会将其范围限制在当前的包中? 谢谢!

Kotlin有垃圾收集器吗? 如果是这样,基于哪种算法?

我正在Kotlin上做一个学校项目,需要知道它如何处理垃圾。 它在垃圾回收器中与Java相似吗?

如何用`java`命令和`kotlin-compiler.jar`来编译Kotlin源代码?

我现在限于使用java命令编译Kotlin源文件。 所以经过一番尝试之后,我在kotlinc/的lib/文件夹中找到了一个kotlin-compiler.jar文件。 然后我试图在kotlinc/lib/写一个Hello.kt文件: public fun main(args: Array<String>) { println("hello") } 然后,我执行了命令java -jar kotlin-compiler.jar Hello.kt ,它工作并生成了一个类文件HelloKt.class 。 结果我执行了命令java -cp ".:kotlin-runtime.jar" HelloKt ,它也起作用了: [xxxxxxx@uss lib]$ java -cp ".:kotlin-runtime.jar" HelloKt hello 但是,对于更复杂的源文件: AimToTen.kt: class AimToTen() { fun need(marks: Array<Int>): Int { // multiply 10 first for (idx: Int in marks.indices) marks[idx] *= 10 val result: Int = 190 […]