LINUX.ORG.RU

Unsafe Java I - Небезопасная жаба


0

0

Как известно при разработке языка Java с самого начала делался упор на "безопасность" кода (так называемый "safe code"). Помимо всего прочего это означало отказ от указателей, работы с памятью и тому подобных низкоуровневых средств. Совсем отказаться правда не удалось, пришлось оставить лазейку, в первую очередь естественно для собственных классов. Но все, что использует Java Runtime, можем использовать и мы. В этой статье мы научимся писать небезопасный код на Яве и используем новоприобретенные знания для решения некоторых интересных проблем, которые штатными средствами Явы не решаются.

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

Вот уж действительно: удаление зубов через задний проход...

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

Это уже не кроссплатформеная жава :) А реализация от Sun... Добавлять в стандарт вроде как не собирались..

>Но, конечно, запрятали они это капитально, а жаль - было б не так извращенно.

Никуда не запрятали, давным давно куча статей по этому и многим другим вещами из sun.* было написано..

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

> Никуда не запрятали, давным давно куча статей по этому и многим другим вещами из sun.* было написано..

Линков не подкинете? Мне как-то реально дальше base64 лазить не приходилось...

А вообще - чума, конечно;)

svu ★★★★★
()

Хм, интересно, а чего особенно не хватает в библиотеках Java, что надо делать таким "заднепроходным" действием?

anonymous
()

Известный медицинский факт - как только изучающий HTML узнает, как сделать мигающий текст, его домашняя страничка тут же оказывается густо украшенной разноцветными мигающими сообщениями - в дополнение к прочим бегущим строкам на пестром фоне. К серьезной работе человека допустят не раньше, чем он научится так не делать.

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

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

В жабке хватает всего всегда в 99.99% случаев. Но иногда наступает тот самый 0.01%... ;)

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

>Хм, интересно, а чего особенно не хватает в библиотеках Java, что надо делать таким "заднепроходным" действием?

openGL, нормальная работа с сетью.. да и всё равно Жава - тормаз :) Хотел я когда-то нормально поработать с ней, но нет - благодаря тому что решение проблем происходит только через такие задние проходы - прощай жава..

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

> Хотел я когда-то нормально поработать с ней, но нет

ниасилил?

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

>учи матчасть :) Java 2D/3D. Насчет работы с сетью - изначально быстро работает. Руки точи %)

Как выйдешь за пределы разработки web приложений, продолжим общаться..

>ниасилил?

ниасилил, нехватило возможностей..

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

> Как выйдешь за пределы разработки web приложений, продолжим общаться..

В Chrome не играл случайно? http://java.com/en/games/desktop/chrome.jsp Значит кто-то таки асилил :)

anonymous
()

За техническую любознательность аффтору - 4. За пердок в лужу - 2 , за ангажированность и быловатый язык статьи - 2. за короткую статью и отсутствие желания работать - 2, за отсутствие самой новости - 2. Итого: 2.4. Вывод: в биорекатор.

anonymous
()

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

Угу. Создаем красивую БИЗАПАСНУЮ штуковину, а когда нам через ее прыгать надоедает, сверлим такую маааленькую дырдочку, тильки для себе.

anonymous
()

супер новость. вообще весьма полезная штука, многие вещи на яве тормозят из-за того, что со всякими ограничениями делаются там через жопу. в .NET приделали для этого блок unsafe {}, а в яве нету его, а так хоть какая радость будет..

anonymous
()

А зачем использовать инструменты не по назначению? Указатели в Java, сборка мусора в C и т.п. извращения...

AsphyX ★★★
()

Автор (Аффтор ?) новости --- сам по себе небезопасная жаба.

Давайте матом новости писать, а чё?

guardian
()
Ответ на: комментарий от AsphyX

Затем, что жабку в 80% случаев используют не по назначению, вот и приходится извращаться.

anonymous
()

Мдя... :( Есть любители пораскидать детских граблей, а потом по ним ходить.

Извращенцы. :(

vada ★★★★★
()

Как один из создателей открытой реализации Жавы предлагаю отправить статью в топку. Пакеты sun.* в джаве и закладывание на их реализацию делают невозможным запуск такого приложения на другой реализации сабжа.

Toster
()
Ответ на: комментарий от vada

>Мдя... :( Есть любители пораскидать детских граблей, а потом по ним ходить.

Педомазохисты? Жесть :)))))

Sun-ch
()
Ответ на: комментарий от r

>В Chrome не играл случайно? http://java.com/en/games/desktop/chrome.jsp Значит кто-то таки асилил :)

lwjgl, jogl - пойди скажи их авторам какую задницу им пришлось изобретать, чтоб добится нормальной скорости :) Как осилишь, продолжим общаться.. А пока жаву в жопу за то что в ней пасутся одни веб девелоперы, которые на риквестах кидают умные слова о том что если расширить возможности жавы - то она не будет ООП.. вот пусть в вебе и живёт эта жава, а я с ней настрадался уже...

>>ниасилил, нехватило возможностей.. Для чего например?

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

P.S. наши понятия о быстроте обработки могут различаться :) В общем после того как я забросил его, я гораздо быстрее выполнил работу на Эрланге и выглядело всё гораздо акуратнее.. Еслиб на риквесте по mapped'ам и структам не заткнулись веб девелоперы, я может и остался работать на жаве.

forgiven
()

jogl сам по себе работает весьма шустренько. хотя жава тормоз конечно

про открытые реализации - да идите вы! лучше прога будет работать только под саном, чем не работать нигде..

pronvit
()
Ответ на: комментарий от forgiven

> Для быстрой обработки пакетов без всяких обхождений левыми путями видимых возможностей жавы

А чо - nio тоже оказался недостаточно быстрым? Тогда да, жабка не для Ваших requirements...

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

> предлагаю отправить статью в топку.

Да нет, пусть будет. Просто префикс sun сразу ставит девелопера перед большим плакатом "ССЗБ". Кто хочет - нехай живет без wora. В конце концов, кто-то даже мелкомягкие расширения жабки пользовал. Для каждого костыля найдется соответствующий ему инвалид...;)

svu ★★★★★
()

Первый нах!

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

Chrome, требования - MS Windows 98/ME/2000/XP. Вот уж платформонезависимое приложение. Почти все семейство windows поддерживает ;)

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

Кхе кхе... С чего там у нас в .NET большинство классов начинаются? microsoft.*? Вот привыкнет народ к этому, и sun.* на ССЗБ намекать не будет. :(

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

Есть, есть, до фигищща альтернатив. Просто у тебя мозжечок промыт, тебе маркетоиды сказали что нет альтернатив, ты и веруешь.

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

выбора нет - меняй работу, раз начальник дурак.

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

Примеры задач и альтернатив под них:

- WEB: RoR, LAMP, ASP, Seaside, ... (около сотни наименований)

- кроссплатформный гуй: Tcl/Tk, Guile+GTK, ещё около пары десятков наименований

- кроссплатформный скриптинг: Perl, Tcl, Scheme, несколько сотен ещё

- мобилы и PDA: Python, C++, Forth...

- распределённые системы: Erlang, OCaml, Common Lisp, Scheme, ещё с дюжину других

Назови свою задачу чётко - скажу, что надо использовать вместо ущербной жабки.

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

URL, please, на открытую реализацию жабы.

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

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

Это общая фраза. Например?

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

Список вызывает некоторые сомнения. Например, Tk использовать для кросс-платформенного GUI вряд ли сильно осмысленнее, чем swing (и уж эстатически Tk вообще страшное пугало). Да и Tcl тут не причем - к Tk есть байндинги из разных языков. Для скриптинга жаба как таковая ваще не годится - в крайнем случае, bsh. Для мабил написать что-то кроссплатформенное на С++ крайне сложно, а Питон, кажется, только одной компанией поддерживается (про Форт на мабилах не слыхал ваще, так что не буду обсуждать).

Насчет альтернатив - что является альтернативой (кроссплатформенной) java webstart?

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

я не на работе на жаве пишу, а опенсорсом занимаюсь. http://ww2d.csoft.net

ты первый сказал, что куча альтернатив, даже не зная, в какой области я пишу, значит сам лох позорный. например для мобил, которые тока J2ME и поддерживают альтернатив не может быть по определению. да и для остальных писать прогу на интерпретируемом языке типа питона (не видел чтоб под КПК писать на нём можно было) или на никому особо не известном Forth - изврат.

а мне нужен именно кросс-платформенный гуй для написания быстрых расширяемых opengl приложений. Tcl/Tk - интерпретирумый язык? нет уж, спасибо GTK - ага, нативный тока под юниксом. под макосом ставьте и запускайте xserver. не надо такое счастье.

был бы ты поумнее - привёл варианты типа Qt, WxWidgets. но от них я отказался, чтоб не мучаться компиляцией под разные платформы (главное, кто будет плугины, которые третьи люди напишут, под все платформы компилить?), да и код на жаве писать легче и быстрее

pronvit
()
Ответ на: комментарий от svu

Эстетически Tk почти идеален. Кому не нравицца - идут на йух, остальные пруцца. Tcl - удобен. Потому и есть смысл использовать именно его, как наиболее под гуйню заточенного. Для скриптинга - не годится жаба, но используется, туды её в качель. Под Symbian б/м портабельно писать можно, не проблема.

webstart комплиментарен жабе и без неё самоценности не имеет. Для других технологий есть другие варианты - тот же CPAN, например.

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

> Эстетически Tk почти идеален.

Проведем usability research на досуге?

> Под Symbian б/м портабельно писать можно, не проблема.

Насколько я могу судить, даже это утверждение можно принять с _очень_ большой натяжкой (да что говорить, даже у реализаций j2me есть "особенности"). А если учесть, что симбиан - не единственная платформа для мабил...

> webstart комплиментарен жабе и без неё самоценности не имеет

Постановка задачи, где не фигурирует слово "жаба": Кросс-платформенная (относительно ОС и браузера) технология создания и внедрения rich client applications с поддержкой автоматической установки, контролем доступа к локальным ресурсам и пр. и пр. Если убрать слово "кросс-платформенная" - альтернативой будет активХ (или xul). Но я-то его убирать не буду;)

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

Можно попросить сделать avi-шку, где бы CPAN позволял что-то "запустить что-то с прямо веб-странички"? Очень хочется узнать что-то новое...

svu ★★★★★
()

В этой статье вас плохому научат. В этой статье вас научат, как переделать газовый пистолет в обычный и все-таки выстрелить себе в ногу, даже если нога вам все еще дорога :)

>openGL, нормальная работа с сетью.. да и всё равно Жава - тормаз :) Хотел я когда-то нормально поработать с ней, но нет - благодаря тому что решение проблем происходит только через такие задние проходы - прощай жава..

Твои проблемы это написание вирусов? Кроссплатформенных?

А OpenGL в ней нормально работает.

java -Dsun.java2d.d3d=true -Dsun.java2d.noddraw=false

>Как выйдешь за пределы разработки web приложений, продолжим общаться..

А IIOP что такое?

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