лямбды будут в восьмой джаве, type inference (для дженериков) уже есть в седьмой джаве.crypto5 wrote:Меня больше всего в джаве бесит отсутствие type inference и лямбд. А так со всем остальным можно жить.valchkou wrote:вернуть List или HashMap или другой класс с кучей значенийM. Ridcully wrote:Ё-моё, геттеры-сеттеры.
Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть.
JVM internals - what does the JVM do? — Ian Rogers
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Это очень ограниченный type inference, в скала например оно работает для вызова метода типа:rzen wrote:лямбды будут в восьмой джаве, type inference (для дженериков) уже есть в седьмой джаве.crypto5 wrote:Меня больше всего в джаве бесит отсутствие type inference и лямбд. А так со всем остальным можно жить.valchkou wrote:вернуть List или HashMap или другой класс с кучей значенийM. Ridcully wrote:Ё-моё, геттеры-сеттеры.
Я Java не знаю, в-принципе): нельзя из функции несколько значений вернуть.
val res = methodCall()
в джаве такого нету.
In vino Veritas!
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
нету. и не будет.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
Действительно, че там документировать-то! Кому надо - в исходниках разберуца, а не осилят значит фреймворк не для них.Интеррапт wrote:Ну вам виднееMontchik wrote:Не вкурсе я, ибо не использовал. Но имхо выглядит сыровато
На самом деле какая там еще документация нужна? Показан код с lombok и показан аналогичный vanilla Java код, который генерится, с комментариями автора. Если кто-то не сможет в таком разобраться - ну так значит ему этот фреймворк и не нужен.
Так вы расскажите, что там до ума доводить то нужно? Веб сайт красивее переделать? А так все хорошо работает - новые фичи добавляет, баги для новых фич оперативно фиксят.Montchik wrote:а когда это до ума доведут, в саму Java уже могут быть включены основные фичи.
А насчет, что в Джаву будут включены такие фичи, то ждите, ждите. Учитывая, что Java 8 выйдет только через год и никаких конкретных планов по поводу Java 9 нет (и еще не факт, что туда такое добавят), то ждать вам как минимум года 3.
Удачи с lombokom и прочим авангардом программизма! Она вам приходится.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
OMG. Да есть там документация Или вы кроме заглавной странички с видео дальше не открывали?Montchik wrote:Удачи с lombokom и прочим авангардом программизма! Она вам приходится.
Ну что тут может быть непонятно?
http://projectlombok.org/features/GetterSetter.html
За 30 секунд все становится понятно - для чего и как.
или им нужно было это размазать на 20 страниц, чтобы заслужить звание хорошей документации?
-
- Уже с Приветом
- Posts: 1377
- Joined: 14 May 2003 20:37
- Location: NY, USA
Re: JVM internals - what does the JVM do? — Ian Rogers
Почему бы им просто не добавить в язык необязательный оператор delete? Те кому надо будут его испльзовать, всех остальных удовлетворит GC.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
на двух стульях не усидеть, тут я с ними согласен.Flying Hen wrote:Почему бы им просто не добавить в язык необязательный оператор delete? Те кому надо будут его испльзовать, всех остальных удовлетворит GC.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
на двух стульях не усидеть, тут я с ними согласен.Flying Hen wrote:Почему бы им просто не добавить в язык необязательный оператор delete? Те кому надо будут его испльзовать, всех остальных удовлетворит GC.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Каким образом вы предлагаете это осуществить? Для этого придется, чтобы delete не только освобождал память, но и осуществлял dereference всех возможных ссылок, которые могут указывать на этот обьект. Т.е. каждый раз при вызове delete, нужно пробегаться по ссылкам и сбрасывать их. Будет ли это оптимательней по сравнению с обычным GC? Я, лично, очень сомневаюсь. Не считая того, что это сделает код очень error-prone по причине, что ссылки вдруг могут начать просто исчезать (попробуйте попрограммировать на Java cо сплошными weak references).Flying Hen wrote:Почему бы им просто не добавить в язык необязательный оператор delete? Те кому надо будут его испльзовать, всех остальных удовлетворит GC.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Мне лично ObjectiveC-шный ARC нравится больше, чем GC
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
а мне нравился (нынче неосуществимый) вариант управления памятью от турбопаскаля, вернее в турбовижене они его реализовали. управление памятью по сути делалось так (уж не серчайте если по памяти что напутаю). объект при инициализации эвристически заказывал сколько ему потребуется памяти, получал его в куче, и больше о памяти не беспокоился. если не хватило—прога падала. но таких неугадываний случалось _исключительно_ мало. ценой такой роскоши был некоторый перерасход памяти. но это малая цена за отсутствие головной боли с управлением памятью
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: JVM internals - what does the JVM do? — Ian Rogers
А как объект отдавал память назад в кучу?rzen wrote:а мне нравился (нынче неосуществимый) вариант управления памятью от турбопаскаля, вернее в турбовижене они его реализовали. управление памятью по сути делалось так (уж не серчайте если по памяти что напутаю). объект при инициализации эвристически заказывал сколько ему потребуется памяти, получал его в куче, и больше о памяти не беспокоился. если не хватило—прога падала. но таких неугадываний случалось _исключительно_ мало. ценой такой роскоши был некоторый перерасход памяти. но это малая цена за отсутствие головной боли с управлением памятью
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Вобще лучше всего пока гибридный подход к памяти сделан в D. Там есть GC, есть возможность давать ему подсказки, можно исподьзовать malloc/free, если приспичит. Игровые конторы стали любить язык все больше и больше. Кармак активно вот следит за развитием языка. Недавно зарелизили OpenGL обертку. Т.е. похоже, что язык игростроителям нужен.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну так это и в C# можно делать, в unsafe контексте.dotcom wrote:Вобще лучше всего пока гибридный подход к памяти сделан в D. Там есть GC, есть возможность давать ему подсказки, можно исподьзовать malloc/free, если приспичит.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
ох ну ты как спросишьMontchik wrote:А как объект отдавал память назад в кучу?rzen wrote:а мне нравился (нынче неосуществимый) вариант управления памятью от турбопаскаля, вернее в турбовижене они его реализовали. управление памятью по сути делалось так (уж не серчайте если по памяти что напутаю). объект при инициализации эвристически заказывал сколько ему потребуется памяти, получал его в куче, и больше о памяти не беспокоился. если не хватило—прога падала. но таких неугадываний случалось _исключительно_ мало. ценой такой роскоши был некоторый перерасход памяти. но это малая цена за отсутствие головной боли с управлением памятью
куча работала как стек, запрашиваешь память, куча "растёт", перед созданием очередной коллекции объектов отмечаешь текущее состояние кучи, создаёшь нужное количество объектов не перепроверяя доступную память, когда нужда в объектах пропадает, релизишь кучу (=все объекты одним махом). аналог пула молодых объектов в JVM но без собссно GC.
поскрипев мозгами смутно припоминаю что кажется была зона памяти если куча до неё дорастала то возникало нефатальное исключение ООМ. но только в том случае если создаваемый объект не был больше чем эта зона. если больше то каюк.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
ну ни хренасе...rzen wrote:если не хватило—прога падала
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
времена были такие, досовские. прога падала и всю систему за собой тянула. в те времена ctrl-alt-del не вызывало окошко для логина, а ребутило систему без лишних вопросовFlash-04 wrote:ну ни хренасе...rzen wrote:если не хватило—прога падала
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 1377
- Joined: 14 May 2003 20:37
- Location: NY, USA
Re: JVM internals - what does the JVM do? — Ian Rogers
Например, сделать так: delete обнуляет только текущую ссылку. Если больше ссылок на объект нет, то память возвращается в пул. Если ссылки есть, то выкидывается exception. Это даст возможность грамотным девелоперам держать память под контролем, если это критично.Интеррапт wrote: Каким образом вы предлагаете это осуществить? Для этого придется, чтобы delete не только освобождал память, но и осуществлял dereference всех возможных ссылок, которые могут указывать на этот обьект. Т.е. каждый раз при вызове delete, нужно пробегаться по ссылкам и сбрасывать их. Будет ли это оптимательней по сравнению с обычным GC? Я, лично, очень сомневаюсь. Не считая того, что это сделает код очень error-prone по причине, что ссылки вдруг могут начать просто исчезать (попробуйте попрограммировать на Java cо сплошными weak references).
Если подход с авто GC не работает, то какой смысл упорствовать? А то получается как у M$, дядя Бил за вас обо всем подумал, расслабьтесь и получайте удовольствие. Агащаз.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Если умело пользоваться escape analysis то можно тоже создавать удалять обьекты в обход ГЦ. Ну и в чем вообще проблема с ГЦ? 95%(а наверное и больше) типичных джава application с гарбадж коллектором проблем не бывает. Если проблемы возникают есть прозрачные способы его тюнит которые покрывают еще процента 4, а если вы попали в оставшийся процент, то может действительно стоит воспользоваться более системным языком(c++)?Flying Hen wrote:Например, сделать так: delete обнуляет только текущую ссылку. Если больше ссылок на объект нет, то память возвращается в пул. Если ссылки есть, то выкидывается exception. Это даст возможность грамотным девелоперам держать память под контролем, если это критично.Интеррапт wrote: Каким образом вы предлагаете это осуществить? Для этого придется, чтобы delete не только освобождал память, но и осуществлял dereference всех возможных ссылок, которые могут указывать на этот обьект. Т.е. каждый раз при вызове delete, нужно пробегаться по ссылкам и сбрасывать их. Будет ли это оптимательней по сравнению с обычным GC? Я, лично, очень сомневаюсь. Не считая того, что это сделает код очень error-prone по причине, что ссылки вдруг могут начать просто исчезать (попробуйте попрограммировать на Java cо сплошными weak references).
Если подход с авто GC не работает, то какой смысл упорствовать? А то получается как у M$, дядя Бил за вас обо всем подумал, расслабьтесь и получайте удовольствие. Агащаз.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Круто Не хотел бы я под такой платформой программировать. Какой смысл обнулять текущую ссылку вообще? (обычно рекомендуют ссылки обнулять, чтобы код было легче отлаживать), но как раз с текущей ссылкой особых проблем нет, вы ей сделали уже delete и знаете, что ее использовать не нужно. Зачем ее обнулять? А вот со всеми остальными ссылками...Flying Hen wrote:Например, сделать так: delete обнуляет только текущую ссылку. Если больше ссылок на объект нет, то память возвращается в пул. Если ссылки есть, то выкидывается exception. Это даст возможность грамотным девелоперам держать память под контролем, если это критично.
Т.е., по вашему, вот такой код должен exception выкидывать?
Code: Select all
String s1 = new String("hello world");
String s = s1;
delete s1;
Почему подход с GC не работает? В большинстве случаев работает. И при чем здесь дядя Бил или Sun? Не хотите работать в managed environment никто вам не мешает из этих языков native код вызывать или даже просто писать свои программы на Asm, C, C++.Flying Hen wrote:Если подход с авто GC не работает, то какой смысл упорствовать? А то получается как у M$, дядя Бил за вас обо всем подумал, расслабьтесь и получайте удовольствие. Агащаз.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
вот не надо, я ведь когда-то и на "Turbo C" писалrzen wrote:времена были такие, досовские. прога падала и всю систему за собой тянула. в те времена ctrl-alt-del не вызывало окошко для логина, а ребутило систему без лишних вопросов
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
чего не надо? трёхкнопочый ребут был насущной реальностьюFlash-04 wrote:вот не надо, я ведь когда-то и на "Turbo C" писалrzen wrote:времена были такие, досовские. прога падала и всю систему за собой тянула. в те времена ctrl-alt-del не вызывало окошко для логина, а ребутило систему без лишних вопросов
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: JVM internals - what does the JVM do? — Ian Rogers
я к тому что принцип "failing gracefully" был известен и тогда
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
принцип то был известен, я не спорюFlash-04 wrote:я к тому что принцип "failing gracefully" был известен и тогда
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Опять же, оно все хорошо только на словах, а когда дело доходит до практики, то кошмар нафиг. JNI например в ICS поменял правила игры. Падает с ошибками, что ошибки компиляции в STL покажутся сказкой. Хорошо, что сами ошибки уникальны и легко гуглятся. Но вобще вся эта дребедень с локальным и глобальным контекстами сделана ровно для того, чтобы убить любое желание писать нативный код.Интеррапт wrote: Почему подход с GC не работает? В большинстве случаев работает. И при чем здесь дядя Бил или Sun? Не хотите работать в managed environment никто вам не мешает из этих языков native код вызывать или даже просто писать свои программы на Asm, C, C++.