LINUX.ORG.RU
Ответ на: комментарий от Karapuz

В основе Swing'а стабильный API, так что всем до лампочки, конкурентный AWT или нет.

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

> в позе раком была как раз девушка, а не программирующий чувак, так что все нормально. А с дотнетом было бы как раз наоборот - парень долбил бы клавиши раком на месте девушки, а вместо девушки его бы ссади жарил 40калетний потный мужик в костюме и очках из ролика I'm PC

Девушка, заметь, тоже с ноутом;)

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

В котором ты не рубишь просто нефига.

Чего метанизируешь в воздух? Делать нечего?

http://msdn.microsoft.com/en-us/library/25z57t8s(v=VS.80).aspx

Причем тут твоя говноссылочка до того, что в Java generics построены на костыле type erasure и являются source-only синтаксическим сахаром, а в .NET они поддерживаются виртуальной машиной.

boxing/unboxing есть везде. Только в .NET человек специально написал

int i = 4;
object b = i;

Аналогичное можно сделать в Java.

С другой стороны в .NET List<int> - это и есть List<int>, а в Java List<int> нету, есть List<Integer>, который превращается компилятором в List of Object, тоесть обычный List. И потом все тормозит. Занавес.

И если ничего не понимаешь, то перед тем как брызгать слюной, читай википедию

C# allows generics directly for primitive types. Java, instead, allows the use of boxed types as type parameters (e.g., List<Integer> instead of List<int>), but this comes at a small cost since all such values need to be heap-allocated (however, a generic type can be specialized with an array type of a primitive type in Java, for example List<int[]> is allowed).

vertexua ★★★★★
()

У меня одного ролик по ссылке в первом посте тормозит? :(

powerofanonymous
()
Ответ на: комментарий от vertexua

Интерестны какие нибудь бенчмарки, сравнения в инете.

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

Чего метанизируешь в воздух?

Коментирую пост.

Причем тут твоя говноссылочка до того, что в Java generics построены на костыле type erasure и являются source-only синтаксическим сахаром, а в .NET они поддерживаются виртуальной машиной.

Потому что ты сваливаешь совершенно несвязные вещи в одну мусорку и делаешь из этого какие-то выводы. Между type erasure и boxingом связь абсолютно никакая. Что выдает что ты просто не понимаешь о чем говоришь.

Боксинг (и как твой вывод «тормоза») происходит совсем не потому что существует type erasure. А потому java не позволяет в качестве параметров типов - примитивы. В .NET примитивы отсутствуют в том смысле что в жабе - они там существуют как компиляторная оптимизация. Приблизительно так же реализовано в Scala где Int это «type alias» и является instanceof AnyVal (в дотнете это звучит как ValueType, а int это type alias на Int32). При чем сам box/unbox в дотнете это CIL инструкция. А в jvm таких нет.

С другой стороны в .NET List<int> - это и есть List<int>, а в Java List<int> нету, есть List<Integer>, который превращается компилятором в List of Object, тоесть обычный List. И потом все тормозит. Занавес.

Ты опять смешал две абсолютно несвязные фичи. Боксинг сделан для удобства пользования параметризованными типами в условиях когда не поддерживается параметризация примитивами.

Вот тебе пример на скале:

class A[@specialized(Int) T <: AnyVal] {
    var v: T = _
    def set(t:T) = v = t
    def get = v
}

object X {
    def main(s:Array[String]) = {
        val a = new A[Int]
        a.set(1)
        println(a.get + 1)
    }
}

вот результат дизасма main:

   0:   new     #16; //class A$mcI$sp
   3:   dup
   4:   invokespecial   #18; //Method A$mcI$sp."<init>":()V
   7:   astore_2
   8:   aload_2
   9:   iconst_1
   10:  invokevirtual   #24; //Method A.set$mcI$sp:(I)V
   13:  getstatic       #29; //Field scala/Predef$.MODULE$:Lscala/Predef$;
   16:  aload_2
   17:  invokevirtual   #33; //Method A.get$mcI$sp:()I
   20:  iconst_1
   21:  iadd
   22:  invokestatic    #39; //Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
   25:  invokevirtual   #43; //Method scala/Predef$.println:(Ljava/lang/Object;)V
   28:  return

Ну что - где-то увидел боксинг при сложении?

Конечно хреново что они генерики так реализовали (с type erasure и без поддержки vm) но ты несешь вообще бред на счет «тормозов из-за боксинга в котором виноват erasure». Не хочешь чтобы были боксинги - используй специализированные коллекции. Или пользуйся языком который умеет специализацию компилятором - scala.

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