правильно конечно - нефиг плодить виртуальые машины. sun таки решила всё перетащить на jvm, но лучше бы она при этом всё-таки отпустила java в свободное плавание, а то RMS уже бесится. ))
а почему бы не сделать java on rails ? неужели в ruby такие оригинальные фичи есть, что их отсутствие не позволяет реализовать фрэймворк на другом языке (тоже об. ор.)
и ваабще может ктонибудь объяснить чем RoR так превосходит Struts c правильно прделанным к нему Template Engine (не jsp )
Ну хотя бы тем, что их не надо кофигурить через 4 разных xml ника и не надо ничего компилить/деплоить. =)
Явщики переползают не потому что им не хватает возможностей, а потому что захотелось глотка свежего воздуха. 8)
На самом деле некий интерес это представляет, хотя бы в плане внутренней поддержки юникода. Потому что Matz к юникоду имеет стойкое отвращение и никуда его встраивать, похоже, не собирается, а те механизмы прозрачной поддержки юникода, что есть сейчас наеписаны на Pure ruby и посему страдают от потери производительности. Хотя может и вру - я не спец по этому языку. =)
Помницца кроме jruby был еще какой-то альтернативный проект реализации рубимашины. Надо посмотреть как у них там дела. 8)
Первую книгу я уже прочитал. Весьма неплохая. Одновременно и туториал и подробный справочник по языку и стандартной библиотеке. Ещё В сети свободно лежит её первая редакция:
>Потому что Matz к юникоду имеет стойкое отвращение и никуда его встраивать, похоже, не собирается, а те механизмы прозрачной поддержки юникода, что есть сейчас наеписаны на Pure ruby и посему страдают от потери производительности.
UNICODE обещали в 2.0, которая будет стабилизированной 1.9 которую сейчас делают.
Есть жабы в свободном плаванье. Настолько "свободном", что
import javax.swing.*;
public class My
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setLayout(null);
JButton b = new JButton("OK");
b.setBounds(30, 24, 60, 24);
frame.add(b);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 450, 150);
frame.setVisible(true);
}
}
даже работает. LOL!
Как "законопослушный" программист я всегда делал:
import java.awt.*;
import javax.swing.*;
public class My
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
Container c = frame.getContentPane(); // !
c.setLayout(null); // !
JButton b = new JButton("OK");
b.setBounds(30, 24, 60, 24);
c.add(b); // !
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(100, 100, 450, 150);
frame.setVisible(true);
}
}
Иначе:
java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(Unknown Source)
at javax.swing.JFrame.setLayout(Unknown Source)
at My.main(My.java:8)
Exception in thread "main"
> Иначе:
> java.lang.Error: Do not use javax.swing.JFrame.setLayout() use javax.swing.JFrame.getContentPane().setLayout() instead
> at javax.swing.JFrame.createRootPaneException(Unknown Source)
так это начиная с 1.5 появилось, но все обратно совместимо.
>Явщики переползают не потому что им не хватает возможностей,
_Явщики переползают_? Это где ты такое видел? Ты еще скажи, что явщики бросились покупать блестящие коробочки с .NET Tema Edition Visual Studio, потому что Балмер где-то сказал, что это модно и позволяет повысить производительность труда программистов