Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   Java - ваш итог(недостатки, прочее) (https://forum.zone-game.info/showthread.php?t=19377)

VISTALL 17.04.2012 20:08

Java - ваш итог(недостатки, прочее)
 
Тема пойдет даже не про то, чего нехватает. А то ли все устраивает вас в ней.

Пожалуста не нужно писать нехватает Propeties, delegates, замыканий и прочих плюшек. :ec: Это нужно в другой сектор ити.

Например я знаком с Java порядка 5 год, сумел поигратся много с чем(неигрался с Spring & JavaEE :eb:)

Я имею свое мнения - я "вполне" доволен языком(именно). :redlol:

Людей которые пишут на Java которые перешли с С++, ищут множественное наследования :dy: - пример я, неимел никаких проблем с стоением Деревья классов. Да и на С++ я имею строгую структуру - аля Java :cw2:

PS. В теме описаны некоторые причины создания napile.org
PS2. Хейтеры - обходите мимо

LineOFWar 17.04.2012 20:15

Re: Java - ваш итог( недостатки,
 
хз это как то с++ для своего java для своего так что наверное в полне хватает начинки. просто нужно как то разграничивать и не липить все на одном. простой пример есть банка сгущенки или еще чего и придумана для откртия этой банки открывашка вот и надо юзать открывашку а не любой острый предмет хотя ведь можно =))

linliss 17.04.2012 20:16

Re: Java - ваш итог( недостатки,
 
раз уже начали отвечать в этом теме, то перенеси первый пост отсюда http://forum.zone-game.info/showthread.php?p=179461 в эту тему

Добавлено через 1 минуту
мне лично нехватает ручного управления памятью

ALF. 17.04.2012 20:20

Re: Java - ваш итог(недостатки, прочее)
 
Лично меня в Java всё устраивает, хоть не так долго с ней и работаю.

А кому надо java + win API - советую использовать C# (C sharp)

p.s.
Цитата:

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java

VISTALL 17.04.2012 20:20

Re: Java - ваш итог( недостатки,
 
Цитата:

Сообщение от linliss (Сообщение 179464)
мне лично нехватает ручного управления памятью

:ci: ну ж говорил, такие посты лишнее, времена такие уже прошли.

Мне GC хватает, и проблем с памьятью неимею. Неумете чистить приложения уже ваше дело

Цитата:

Сообщение от ALFOS (Сообщение 179466)
Лично меня в Java всё устраивает, хоть не так долго с ней и работаю.

А кому надо java + win API - советую использовать C# (C sharp)

p.s.

ну если чисто WinAPI , есть интересные либы аля BridJ & Jna, которые имеют реализацию - того же прогресс бара с Win7

Цитата:

Сообщение от LineOFWar (Сообщение 179463)
хз это как то с++ для своего java для своего так что наверное в полне хватает начинки. просто нужно как то разграничивать и не липить все на одном. простой пример есть банка сгущенки или еще чего и придумана для откртия этой банки открывашка вот и надо юзать открывашку а не любой острый предмет хотя ведь можно =))

ток потом с банки сгущенку не попьеш, сцука острая будет(краи банки, если открывать не тем чем надо) :co:

Azagthtot 17.04.2012 20:32

Re: Java - ваш итог(недостатки, прочее)
 
Объективно не хватает аналога деструктора, который бы вызывался когда количество ссылок на объект ноль, и он (объект) отправляется умирать.
Достал автобоксинг... Ну почему getDeclaredConstructor(int.class) и getDeclaredConstructor(Integer.class) две большие разницы?
Достал массив. Который с одной стороны вроде и Iterable<> (for.. : arr) а с другой (iterator()) вроде и нет...

VISTALL 17.04.2012 20:33

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Azagthtot (Сообщение 179478)
Объективно не хватает аналога деструктора, который бы вызывался когда количество ссылок на объект ноль, и он (объект) отправляется умирать.
Достал автобоксинг... Ну почему getDeclaredConstructor(int.class) и getDeclaredConstructor(Integer.class) две большие разницы?
Достал массив. Который с одной стороны вроде и Iterable<> (for.. : arr) а с другой (iterator()) вроде и нет...

Полность согласен, кроме первого (причуды памьяти) .


:D Я как то на OpenJDK на форуме написал тему.

Object[] is not implement Iterable? Why?

Цитата:

Ну почему getDeclaredConstructor(int.class) и getDeclaredConstructor(Integer.class)
:cj: вопрос без ответа (not null type, nullable type)

Blakkky 17.04.2012 20:44

Re: Java - ваш итог(недостатки, прочее)
 
Компиляции в натив не хватает ужасно и многословность явы иногда напрягает (особенно когда без IDE писать/править что-то надо).
Код:

Integer1024bit a, b, c, d;
......
a = b.add(c.mul(d).sub(a))); // приятнее быль бы видеть a = b + (c * d - a);

А так - язык и язык, не хуже и не лучше других (Ну если BrainFuck в рассчет не брать :D).

VISTALL 17.04.2012 20:45

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179485)
Компиляции в натив не хватает ужасно и многословность явы иногда напрягает (особенно когда без IDE писать/править что-то надо).
Код:

Integer1024bit a, b, c, d;
......
a = b.add(c.mul(d).sub(a))); // приятнее быль бы видеть a = b + (c * d - a);

А так - язык и язык, не хуже и не лучше других (Ну если BrainFuck в рассчет не брать :D).

:redlol: помню когда то читал, что авторы отказались от этого

Цитата:

Сообщение от Blakkky (Сообщение 179485)
А так - язык и язык, не хуже и не лучше других (Ну если BrainFuck в рассчет не брать :D).

:by: ну сравнитель с BrainFuck мне страшны языки ByPascal , ну или Kotlin

Blakkky 17.04.2012 21:05

Re: Java - ваш итог(недостатки, прочее)
 
Я знаю, что отказались, но (внезапно) для строк и других оберток на атомарные типы данных (Integer, Double, etc) операторы (+-*/) перегрузили "из коробки".

Натив очень хочется, чтобы не прибегать к JNI на СИ, а писать все на одном языке (пусть и не все приложение в натив, а только отдельные классы/методы, пусть даже на своем диалекте платформозависимом). Да и по большому счету, портируемость - это хорошо, конечно, но много ли приложений, которым она нужна? Массово - это клиент-банки и игрушки для телефонов, все остальное можно и скомпилить в натив для 3х-4х платформ и не таскать за собой ява-машину.

О! Еще забыл, чего очень-очень не хватает: препроцессора и беззнаковых типов данных!

А про язык - ява не на много проще остальных языков, так что особо разницы нету.

VISTALL 17.04.2012 21:08

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179499)
Я знаю, что отказались, но (внезапно) для строк и других оберток на атомарные типы данных (Integer, Double, etc) операторы (+-*/) перегрузили "из коробки".

Натив очень хочется, чтобы не прибегать к JNI на СИ, а писать все на одном языке (пусть и не все приложение в натив, а только отдельные классы/методы, пусть даже на своем диалекте платформозависимом). Да и по большому счету, портируемость - это хорошо, конечно, но много ли приложений, которым она нужна? Массово - это клиент-банки и игрушки для телефонов, все остальное можно и скомпилить в натив для 3х-4х платформ и не таскать за собой ява-машину.

О! Еще забыл, чего очень-очень не хватает: препроцессора и беззнаковых типов данных!

А про язык - ява не на много проще остальных языков, так что особо разницы нету.


уже писал - посмотри Jna&BridJ - норм либы

Старые песни о Главное. Generic as Runtime

http://klikr.org/2492736ce0eb9b69d97e81595367.png

source:
Свернуть ↑Развернуть ↓


Добавлено через 20 минут
немножко обновил что б наглядней видить

Добавлено через 30 минут
забыл написать это napile

Visor 17.04.2012 22:21

Re: Java - ваш итог(недостатки, прочее)
 
Устраивает java

DiagoD 17.04.2012 23:05

Re: Java - ваш итог(недостатки, прочее)
 
Ява устраивает на все 100%, правда иногда все же не хватает множественного наследования но в принципе всегда выкручиваемся)))

А на счет ручного управления памятью, то это точно так же как и с ручной коробкой передач, это пантово и перед "телачкоми" можно повыделоватся, но все же с автоматом на много удобней ездить.

Добавлено через 2 минуты
Я не вижу смысла в ручном управлении памятью.

Ro_0TT 17.04.2012 23:10

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от DiagoD (Сообщение 179543)
А на счет ручного управления памятью, то это точно так же как и с ручной коробкой передач, это пантово и перед "телачкоми" можно повыделоватся, но все же с автоматом на много удобней ездить.

Неудачное сравнение, я вот лично люблю когда у меня и руки заняты, и обе ноги, так сказать, "полностью погружен в управление машиной"... но это другая тема.

По сути да, я тоже не вижу смысла ручного управления памятью. От утечек годами избавится немогут.. а тут ручное управление :redlol:.

DiagoD 17.04.2012 23:20

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Ro_0TT (Сообщение 179545)
Неудачное сравнение, я вот лично люблю когда у меня и руки заняты, и обе ноги, так сказать, "полностью погружен в управление машиной"... но это другая тема.

Это вы просто не ездили на автомате)

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

Visor 17.04.2012 23:27

Re: Java - ваш итог(недостатки, прочее)
 
Я бы не ставил ручное управление памятью, которое и не ставят, потому что java юзают все кому не лень и те кто могут ездить, и значительно больше новиков, которые ездить может никогда и не научается.

Добавлено через 1 минуту
Цитата:

Сообщение от Ro_0TT (Сообщение 179545)
Неудачное сравнение, я вот лично люблю когда у меня и руки заняты, и обе ноги, так сказать, "полностью погружен в управление машиной"... но это другая тема.

По сути да, я тоже не вижу смысла ручного управления памятью. От утечек годами избавится немогут.. а тут ручное управление :redlol:.

Избавится не могут единицы, которые понимают что делают и реально могут делать л2-серверо ядро, остальные просто притусовываются)

Если не получается - то нужно тренироваться и все получится.

Azagthtot 18.04.2012 01:33

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179485)
Компиляции в натив не хватает ужасно и многословность явы иногда напрягает (особенно когда без IDE писать/править что-то надо).

О нет, только не перегрузка операторов....
а то будет
Код:

mystream a;
a << 8;

Вот смотришь в книгу и думаешь то ли это
a.out(8) то ли (int)a << 8....

ANZO 18.04.2012 01:34

Re: Java - ваш итог(недостатки, прочее)
 
Все что нужно от java для меня - есть и устраивает. Для win приложений использую шарп.

VISTALL 18.04.2012 06:14

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Azagthtot (Сообщение 179568)
О нет, только не перегрузка операторов....
а то будет
Код:

mystream a;
a << 8;

Вот смотришь в книгу и думаешь то ли это
a.out(8) то ли (int)a << 8....

угу привет, С++. ВОт мне интересно как в Scala с этим сделали, вроде там переегрузка операторов есть

Добавлено через 2 часа 50 минут
В переопределении есть свои минусы и плюсы

Blakkky 18.04.2012 14:44

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Azagthtot (Сообщение 179568)
О нет, только не перегрузка операторов....
а то будет
Код:

mystream a;
a << 8;

Вот смотришь в книгу и думаешь то ли это
a.out(8) то ли (int)a << 8....

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

А Вы попробуйте на яве и на С++ написать код для поиска, всего-то навсего, корней квадратного уравнения, если изначально известно, что числа будут большими (4кбита, скажем, чтоб точности хватило для запуска ракет :)), а потом прочитать тот и другой код. Программирование, оно не только рисование окошек и вываливание строк текста в лог, там и математика встречается ;)
Код:

Double4k *x1, *x2, *a, *b, *c, *d;
.....
d = b * b -  4. * a * c;
x1 = ( -b - Double4k::sqrt( d ) ) / 2. / a;
x2 = ( -b + Double4k::sqrt( d ) ) / 2. / a;

С++ оставляет запись оригинальной и читабельной, почти все записано на языке математики.
Код:

Double4k x1, x2, a, b, c, d;
......
d = b.mul( b ).sub( new Double4k( 4.0 ).mul( a ).mul( c ) );
x1 = new Double4k( 0. ).sub( Double4k::sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).sub( Double4k::sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );

А вот ява явно пытается научить нас литературному языку. Имхо, заставлять писать такой код математика - это садизм.
И, кстати, add/mul/sub/div - это не совсем в канонах названия методов на яве, если называть как положено, то будет еще более не читабельно :)

ЗЫ: опечатался в формуле на яве, интересно, сколько времени уйдет на поиск опечатки (я 4 раза код прочитал, пока нашел, хотя ошибка наибанальнейшая).

Array 18.04.2012 15:30

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179644)
ЗЫ: опечатался в формуле на яве, интересно, сколько времени уйдет на поиск опечатки (я 4 раза код прочитал, пока нашел, хотя ошибка наибанальнейшая).

Скобки же, или нет?
x1 = (( new Double4k( 0.0 ) ).sub( Double4k::sqrt ( d ) )).div( a ).div( new Double4k( 2.0 ) );
Code: Java

C++ math offtop:
Свернуть ↑Развернуть ↓

Azagthtot 18.04.2012 16:33

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179644)
ЗЫ: опечатался в формуле на яве, интересно, сколько времени уйдет на поиск опечатки (я 4 раза код прочитал, пока нашел, хотя ошибка наибанальнейшая).

"Неймспейсы" в java отделяются . а не :: :)
А вообще, перегруз операторов - палка о двух концах. Я с вами согласен.

Blakkky 18.04.2012 17:47

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Array (Сообщение 179656)
Скобки же, или нет?
x1 = (( new Double4k( 0.0 ) ).sub( Double4k::sqrt ( d ) )).div( a ).div( new Double4k( 2.0 ) );
Code: Java

Может быть, без IDE не понятно, если честно. Но ошибка не в этом. Да и для вызова функций вроде как последовательность однозначна, слева направо.

Цитата:

Сообщение от Azagthtot (Сообщение 179668)
"Неймспейсы" в java отделяются . а не :: :)
А вообще, перегруз операторов - палка о двух концах. Я с вами согласен.

Да, это тоже косяк, но я не про эту ошибку, я про ошибку в логике кода говорил (пример-то на читабельность кода).

О, пока отвечал, еще одну ошибку нашел :)

Ошибки (это к вопросу чтения кода):
1. x1 и x2 вычисляются одинаково, хотя это должно быть не так
x1 = new Double4k( 0. ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


2. Потерял b в формуле для корней:
x1 = new Double4k( 0. ).sub( b ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).sub( b ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


Кстати, перегрузка операторов легко решается на уровне препроцессора (по крайней мере для себя я это делал так: если после переменной-объекта есть +-*/, то поискать у нее метод __operatorAdd(...) и заменить + на его вызов).
И препроцессор простенький для дублирования/генерации кода для себя тоже делал сам (кое-что удобно генерировать, а не писать руками), build.xml для ant-а + php-скрипт для предобработки классов перед компиляцией. Один в таком решении косяк - код перестает валидироваться в IDE. :(

VISTALL 18.04.2012 23:27

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Blakkky (Сообщение 179696)
Может быть, без IDE не понятно, если честно. Но ошибка не в этом. Да и для вызова функций вроде как последовательность однозначна, слева направо.


Да, это тоже косяк, но я не про эту ошибку, я про ошибку в логике кода говорил (пример-то на читабельность кода).

О, пока отвечал, еще одну ошибку нашел :)

Ошибки (это к вопросу чтения кода):
1. x1 и x2 вычисляются одинаково, хотя это должно быть не так
x1 = new Double4k( 0. ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


2. Потерял b в формуле для корней:
x1 = new Double4k( 0. ).sub( b ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).sub( b ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


Кстати, перегрузка операторов легко решается на уровне препроцессора (по крайней мере для себя я это делал так: если после переменной-объекта есть +-*/, то поискать у нее метод __operatorAdd(...) и заменить + на его вызов).
И препроцессор простенький для дублирования/генерации кода для себя тоже делал сам (кое-что удобно генерировать, а не писать руками), build.xml для ant-а + php-скрипт для предобработки классов перед компиляцией. Один в таком решении косяк - код перестает валидироваться в IDE. :(

поддержка IDE незнаю проще - если есть IDE опенсорс, а вот компилятор(когда ниодин ненравится это ппц):cd:

n3k0nation 19.04.2012 15:08

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от Azagthtot (Сообщение 179478)
Достал автобоксинг... Ну почему getDeclaredConstructor(int.class) и getDeclaredConstructor(Integer.class) две большие разницы?
Достал массив. Который с одной стороны вроде и Iterable<> (for.. : arr) а с другой (iterator()) вроде и нет...

Решили, блин, проблему... Прощайте примитивы, привет концепция: "Обьект - мой Бог!".

С JavaOne:
Цитата:

Первый доклад назывался «JDK8 и дальше». Собственно JDK8 и набор его фич уже ни для кого не секрет, а особый интерес у меня вызывало «…и дальше». Фича-листы показывали так быстро, что я почти ничего не запомнил, только урывками: примитивов больше не будет, только объекты, самонастраивающаяся JVM и много-много другого. Ждём слайды на сайте конференции.
Пруф: тык-тык

VISTALL 19.04.2012 18:51

Re: Java - ваш итог(недостатки, прочее)
 
Цитата:

Сообщение от ASevenfold (Сообщение 179929)
Решили, блин, проблему... Прощайте примитивы, привет концепция: "Обьект - мой Бог!".

С JavaOne:

Пруф: тык-тык

:ec: я пасс чёто писать на ней)

Ronn-l2f 22.04.2012 10:30

Re: Java - ваш итог(недостатки, прочее)
 
Всегда в джаве всего хватало, а те, кому чего-то не хватают, пытаются в ней увидеть либо черезмерный синтаксический сахар либо другой какой-то язык


Текущее время: 10:59. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot