@月黑风高食肉虎 噗噗虎的技术博客

精于心,简于形

你看,世界上一般事物的发展规律基本都是从简单,升级为复杂,然后再进化到精简,回归于简单,如此循环往复前进不止。

我们来看一段代码:

import groovy.swing.SwingBuilder
swing = new SwingBuilder()
frame = swing.frame(title:'Demo') {
    menuBar {
        menu('File') {
            menuItem 'New'
            menuItem 'Open'
        }
    }
    panel {
        label 'Label 1'
        slider()
        comboBox(items:['one','two','three'])
    }
}
frame.pack()
frame.visible = true

你猜猜这是什么代码?这不是java,这是一段groovy代码,它用swing实现了下面这个窗口: Demo window

咱们看看实现同样功能,但用Java写会是什么样的?

package swingTest1;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;

public class DemoWin implements Runnable {

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new DemoWin());
	}

	@Override
	public void run() {
		JFrame frame = new JFrame();
		frame.setTitle("Demo");

		JMenuBar mbar = new JMenuBar();
		JMenu menu = new JMenu("File");
		mbar.add(menu);
		menu.add(new JMenuItem("New"));
		menu.add(new JMenuItem("Open"));
		frame.setJMenuBar(mbar);

		JPanel panel = new JPanel();
		panel.add(new JLabel("Label 1"));
		panel.add(new JSlider());
		panel.add(new JComboBox<String>(new String[] { "one", "tow", "three" }));
		frame.add(panel);

		frame.pack();
		frame.setVisible(true);
	}
}

想想,如果让你用java的swing实现一个文件浏览器的话,你觉得大概要多少时间?最终会有多少行代码?但如果用groovy写,可以减少多少次键盘敲击?可以节约多少时间?如果用这些剩余的时间去把妹纸的话,现在还会落得单身狗程序猿的地步么?

先在你终于明白了吧,为什么说懒是推动科技进步和社会发展的原动力了吧。至于妹纸嘛,你得先要有一个再说。

所以恩格斯说,“历史总是螺旋式地上升”的,世间之事,大抵如此。嗯。