LINUX.ORG.RU

Релиз JRuby 1.0.1


0

0

JRuby это написанный на Java интерпретатор популярного языка программирования Ruby.

Текущая версия совместима с Ruby 1.8.5 и включает в себя следующие особенности:

* реализовано большинство встроенных классов Ruby;

* возможно определение Java-классов на Ruby и интерактивное взаимодействие со средой Java;

* встроена поддержка Bean Scripting Framework (BSF);

* дистрибутив распространяется под тремя лицензиями (CPL/GPL/LGPL).

* исправлено 28 ошибок первой версии и ошибки, связанные с сетевыми взаимодействиями.

>>> Подробности

Ответ на: комментарий от aydef

>ну и ? паралельный гц работает без блокировок?
С блокировками, вероятно. Однако, это его внутренние дела, не влияющие на обычный код.

>ох уж эти сказочники .... про "время работы пропорционально..." - верю, но только для копирующего гц ( для young generation ) и только для фазы сборки - копирования.
Для трассировки тоже. GC в Java - копирующий (точнее, есть и трехцветный mark&sweep, но он не основной).

>однако есть еще и trace - а это уже не так красиво. это красиво только для чисто функциональных языков типа haskell,где точно известно, что в принципе не может быть ссылок из old generation в young one. в жаба - тебе нужно либо трейсить весь old generation, либо делать (программно эмулировать) write barrier, что значительно утяжеляет (по времени) изменение (запись) объекта (требуется все время чекать, а не завел ли он у себя ссылку на объект из young? ).

Write barrier делается с помощью card marking, всего тремя инструкциями на x86. На JVM от Azul Systems - так вообще аппаратно. На практике, в оптимизированом коде скоростью барьера можно пренебречь.

Кстати, в JVM 1.3 для барера использовали защиту памяти - работало медленнее программного барьера.

>cборка в old generation это песня, а уж компактизация хипа - вообще сказка. известны случаи (в IBM), когда на компактизацию хипа ~1.5G гц тратил > 5 минут.
Были, сам видел на старых JVM. Там GC был _однопоточный_ из-за чего все вставало намертво. На современных JVM (1.5, 1.6) на куче в 8Гб на типичной серверной нагрузке время простоя составляет 5 секунд в день - из моей статистики.

Можно свести до миллисекунд с помощью дальнейшего тюнинга, но просто нет необходимости.

>ничего не мешает использовать эту технику и в с и в с++ и ... в чем угодно. я полагаю что когда вам за 40, нехило бы перед тем как 3.14здеть, сначала разобраться в теме. то, что простительно 3.14здюкам с лора должно быть стыдно человеку степенному.
Это для С++ в полном объеме невозможно. Критична важна возможность инлайнинга виртуальных функций, которая нормально делается только в HotSpot.

Точнее, в С++ МОЖНО делать _примерно_ подобное с помощью Profile-Guided Optimization (есть в GCC и MSVC), но это всего лишь неполноценная замена реальной динамической оптимизации. Если интересно, можно продолжить разговор на RSDN.

anonymous
()
Ответ на: комментарий от Casus

>> Специфическую парадигму "MVC" в Swing ниасилили?

>Ничего особо специфичного. Сам всегда делаю "котлеты и мухи отдельно", проблема возникает, когда вкус котлет не нравится. Ну, например, надо сделать кнопку с градиентной заливкой фона. Без чтения исходников JRE не так просто проделать такую, казалось бы, простую операцию. Ну, или, сменить цвет Thumb в JSlider. Решение я нашёл, но с радостью приму линк на документацию, где об этом рассказывается. Хочу увидеть, как можно управлять цветом и прочими элементами скроллбара (дизайн задан в картинках) в таблице, которая рисуется на неподвижном фоне. 

Для градиентной кнопки первая ссылка в Google на сайт forum.java.sun.com и код (с моими исправлениями):


<code>

package demo;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GradientButton extends JButton {
	private Color color1;

	private Color color2;

	public GradientButton() {
		this(Color.WHITE, Color.LIGHT_GRAY);
		this.setOpaque(false);
	}

	public GradientButton(Color c1, Color c2) {
		this.color1 = c1;
		this.color2 = c2;
	}

	public void setColor1(Color c1) {
		this.color1 = c1;
		repaint();
	}

	public void setColor2(Color c2) {
		this.color2 = c2;
		repaint();
	}

	// Overloaded in order to paint the background
	protected void paintComponent(Graphics g) {
		
		final Graphics2D g2 = (Graphics2D) g;
		int w = getWidth();
		int h = getHeight();
		GradientPaint gradient = new GradientPaint(20, 0, color1, 20, h,
				color2, false);
		g2.setPaint(gradient);
		g2.fillRect(0, 0, w, h);
		super.paintComponent(g);
		
	}

	public static void main(String args[]) {
		JFrame frame = new JFrame();
		frame.setSize(600, 400);

		GradientButton button = new GradientButton();
		button.setForeground(Color.BLACK);
		button.setText("Test");

		frame.getContentPane().add(button);
		frame.pack();
		frame.setVisible(true);
	}
}

</code>

iZEN ★★★★★
() автор топика
Ответ на: комментарий от iZEN

Исправляю (один метод):

        public GradientButton(Color c1, Color c2) {
		this.color1 = c1;
		this.color2 = c2;
		this.setContentAreaFilled(false);  // *
	}

iZEN ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Угу - тормозить нечему, но тормозит мрачно!

А вот я знаю _где_ надо применять яву - поэтому я не считаю еЯ говном.
Но это узкая нища, все о чем тут говорилось - мимо и _там_ она - говно :)

anonymous
()
Ответ на: комментарий от iZEN

> Для градиентной кнопки первая ссылка в Google...

Да ссылок в гугле можно много разных найти. Я говорил о неполноте свинга, и что его часто надо дописывать под себя.

Про этот конкретный код. Как будет выглядеть нажатая кнопка? Просто нажми и подержи, чтобы было видно. Я ведь написал свою такую же кнопку, выглядит очень похоже, только приходится перегружать ещё и метод из UI, и вообще знать как именно происходит процесс рисования.

Casus ★★★★★
()
Ответ на: комментарий от anonymous

> Да, и прежде чем брызгать соплями - я профессиональный программист на С/С++, контрибьютор в Boost, у меня на моем счету три встроенных девайса с Линуксом на борту. А еще я знаю детали функционирования JVM в мельчайших подробностях.

А что именно в boost вы наконтрибьютили? Я полагаю, что эту-то информацию не обязательно под NDA прятать.

eao197 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.