Welcome 微信登录

首页 / 软件开发 / JAVA / Java.next:第二部分——与Java的互操作

Java.next:第二部分——与Java的互操作2011-01-29 yeeyan 译: 梦幻泡影露电本文是Java.next系列的第二部分。在这一部分,我们来看Java.next语言如何与Java进行互操作。

在所有这些Java.next语言中,与Java互操作都是很简单的一件事。这得归功于Java虚拟机规范,它使得JVM上的其它语言能够很容易的反射以及调用Java代码。

一个Swing的例子

作为与Java互操作的第一个例子,考虑通过调用Swing API创建一个应用程序,使其包含:

● 一个窗口

● 一个按钮

● 点击按钮时弹出一个模式对话框

作为参照,这里先给出使用原始Java代码给出的实现:

// Java
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Swing {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello Swing");
JButton button = new JButton("Click Me");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(null,
String.format("<html>Hello from <b>Java</b><br/>" +
"Button %s pressed", event.getActionCommand()));
}
});
frame.getContentPane().add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}

接下来,我将使用Java.next中的语言来实现这个Swing应用。对于这些代码,有两点需要注意的地方:

■ 在这个例子中,我根据这些语言与Java语法差异从小到大的顺序呈现代码。这样做使得我们能从熟悉东西自然过渡到陌生的事物。

■ 下面这些实现并不是这些语言的最佳实践。它们被刻意简化,使得我们能将注意力集中在与Java的互操作上。在接下来的文章中,我将更多的展现这些语言的习惯用法。

Groovy的实现

Groovy是Java.next语言中与Java最相似的,下面是Groovy的实现代码:

// Groovy
import javax.swing.JFrame
import javax.swing.JButton
import javax.swing.JOptionPane
import java.awt.event.ActionListener
frame = new JFrame("Hello Swing")
button = new JButton("Click Me")
button.addActionListener({
JOptionPane.showMessageDialog(null, """<html>Hello from <b>Groovy</b>
Button ${it.actionCommand} pressed""")
} as ActionListener)
frame.contentPane.add button
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
frame.pack()
frame.visible = true