LINUX.ORG.RU

Java для драйверов устройств


0

0

Говорят, что Java не подходит для написания драйверов устройств. Говорят...

На основе виртуальной машины Squawk создана экспериментальная реализация Java-машины, работающая в ядре OS Solaris. Цель эксперимента - позволить использовать для написания драйверов устройств язык и платформу Java. Один драйвер уже успешно переписан с C на Java.

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

anonymous

Проверено: anonymous_incognito ()

Ох, смешная ветка, особенно первая половина. Сам как раз такой упомянутый тут кем-то старый бородатый СИшник, потому смеялся уже от одного названия. Думаю, мой подход к изучению Жабы был самым правильным -- "Введение в ..." отложил навечно ровно на той странице, где было написано, что в Ж. int -- это class. За все прошедшие с той пор годы ни разу не пожалел. Чего и нынешней молодежи желаю.

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

>теперь вопрос, что именно "без инвоков в Win32 API нихрена толком не сделать" невозможно сделать?

Писал я проект год назад (теперь клиентский АРМ стоит на центральной станции связи в москве и в управлении московской РЖД), щас все не вспомню, но вот навскидку: 1. ListView. 1.1 Опеределить на каком SubItem'е кликнули мышой 1.2 Поместить иконку в SubItem 1.3 Поместить иконку в Header

2. Сделать различные варианты открывания формы (через SetWindowPlacement)

3. Сделать вменяемый FormatRange в RichTextView (или как он там)

4. NET'овская обертка к WIA - говно, все нужно делать руками на C/COM

В общем лень дальше вспоминать. Да что там вспоминать - можно пойти в Windows.Forms FAQ на gotdotnet.ru - Там каждый третий ответ на вопрос начинается с атрибута [DllImport].

В общем, если когда-нибудь будешь делать серъезный проект на NET и Windows.Forms то вспомнишь дядю билли не раз.

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

> Я не говорил, что ListView реализует мвк. Я спросил, чем тебя его функционал не устраивает (можешь посмотреть выше по теме). К тому же я ни разу не жалел, что фрейморковские многоитемные контролы не реализуют мвк.

Не устраивает тем, что Хейлсберг, связавшись с Билли, чувство реальности потерял. Как было в дельфе правильно - Датасет-ДатаСорс-Контролы. Так нет же, вкрутили в дотнет какую-то жуткую пародию на датабиндинг, датасет превратили в контейнер для дататейблов, чтоб заставить работать ListView или DataGrid так как мне надо - приходится писать туеву хучу кода. А попытка пристыковать датасет и IEnumerable вызвала у меня то что называют "культурным шоком". Я понимаю, конечно, что Билли, как Дон Рэба, может доказать что люди ходят на руках и люди ходят на боках, что бог есть и что бога нет, но парадигмы заложенные в датабиндинг дотнета бросают меня в холодный пот.

> Мне этот патерн больше напоминает ситуацию с SQL. Хочется посмотреть на того человека, который будет с БД на БД прыгать.

Ну эт смотря какие БД... я прыгнул с мелкомягкого SQL-стервера на Sybase даже не оцарапавшись :) (ну правда мелкомягкие в своё время всё у сайбейса подтырили, так что их сервер - незаконорожденный брат сайбейсовского) :)

> Так вот и с мвк имхо. Или вот например design patterns. Там полезных паттернов - штук 10.. остальное - пустая трата времени (не всегда, но по большей части).

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

> Поэтому и на джаву наезжал именно за ее теоретичность. Ну да, философия джавы.. круто.

Да нифига она не теоретичная. В то время как в дельфе и дотнете тебе дают пруд с кучей рыбы (половина из которой кверху брюхом от рождения плавает), в жабе тебе дают удочку. И рыбу ловить приходится самому. И гриды хитромудрые рисовать приходится самому. Но зато - DateModel плюс пару векторов плюс пару хэшей - и получаешь именно тот датасет который хотел. А свинговской таблице все равно что отображать; ну это как набор костей, из которых ты собираешь нужный скелет и наращиваешь на него нужное мясо, вместо выкапывания на кладбище какого-то хромого зомби :)

> Еще раз повторюсь, что технологии реализации контролов не сравниваю. Я сравниваю функционал контролов. Конкретно ListView и JTable, который поддерживает AbstractTableModel. Есть задача отобразить данные, пользователю пох. используется при этом мвк или нет.

Есть накая вещь - code maintainability. В парадигме MVC она нам порядок выше. А написать при желании можно всё на всём, особенно если потом убежать быстро :)

>> Пример кода покажи.

> public class OnDialogOpened extends java.awt.event.WindowAdapter { /* OMITTED */

> /** * Обработчик события открытия диалогового окна. */ public void windowOpened(java.awt.event.WindowEvent e) { throw new Exception("I'm some exception."); } }

> Тока оно не работает. Ибо философия не позволяет! (мммать)

А, вот ты про что... ну да, это не работает. И это хорошо! А то есть отдельные персоны котоые даже из конструктора умудряются эксепшн бросать :)

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

> Да много без чего можно обходиться. Кто ж спорит. Вирт вон считает, что можно практически без всего обходиться. Только мне что-то не хочется на его Оберонах писать. Итак психика ни к черту.

Если есть интерфейсы с полиморфизмом - их за глаза хватит; даже листенеры с их созданием/удалением эвент-объектов как бы не сильно нужны. Делегаты - всего лишь попытка реализовать нечто позволяющее откэллбэчиться в парент-код; ну передай в конструктор ссылку на абстрактный предок интерфейса, или присвой ее паблик-полю :)

>> Тебя никто не собирается принизить, это лишь твои проекции :)

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

Эххх... мой топор уже давно рядом с автоматом калашникова на стенку повешен, как старая добрая память... :)

>> Кстати так и не могу врубиться, а при чем в твоих предыдущих сообщениях упоминания хиппи.

> Постараюсь объяснить. Когда человек начинает ради некой абстрактной идеи усложнять себе жизнь, делать все через Ж, мне это напоминает хиппей. Типа побочных эффект ассоциативного мышления.

Усложнять? Не, усложнять - это попытки изучения кучи специфической конкретики (как в дотнете), вместо того чтобы один раз понять идеологию. В одном случае ты смотришь на изжеванный лист с нотами, а тебе через плечо объясняют "вот тут играем, вот тут не играем, а вот это не бемоль - это пятно, рыбу заворачивали", а в другом случае - "это задумано так-то, работает так-то, и если сделаешь так-то то работать будет всегда и везде".

> Ну и сразу тут отвечу на выпады про то, серьезно ли я или нет насчет контролов. Ребятушки. Все хорошо вмеру. Если контрол реализует мвк - это еще не значит, что он нереально крут. Бросайте уже ваш максимализм. МВК - это красивая теория, но на мой взгляд она не стоит такого фанатичного поклонения. На практике от этой хрени легче жить не становится, имхо.

Когда я смотрю на TDropDownList, который как бродяга хиппи живет по принципу "всё моё - вот тут в мешочке на шее", и после этого гляжу на свинговский дропдаун, который говорит "шеф, всё отрисую, дай модель" - желание снять томагавк с гвоздика и порубать в капусту идеологов "самодостаточного контрола" становится жутко неиллюзорным :)

> P.S. Блин. Ну что за еклмн. Ну что за хз что. Сказал же, что не собираюсь я холивары разводить.

Давно не брал я в руки шашку (c) :)

> P.P.S. Судя по всему, раз я не писаю кипятком от design patterns, меня еще и в этом обвинять начнут?

Ну тогда нас с тобой на пару бить будут... я от академических паттернов тоже не тащусь :)

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

> Писал я проект год назад (теперь клиентский АРМ стоит на центральной станции связи в москве и в управлении московской РЖД)

Если на дотнете - главное чтоб не в авиадиспетчерской :)))))))))

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

>Если на дотнете - главное чтоб не в авиадиспетчерской :)))))))))

Да ладно тебе, пока вроде пашет (не без греха, конечно :))) Но, блин, скажу я тебе сколько траха было, чтобы сделать все красивым и удобным. А сколько врожденных глюков Windows.Forms пришлось обходить... :(

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

> В общем лень дальше вспоминать. Да что там вспоминать - можно пойти в Windows.Forms FAQ на gotdotnet.ru - Там каждый третий ответ на вопрос начинается с атрибута [DllImport].

Ну вот, аргументированые нападки (и без фанатизму в глазах). Здорово. Да, ты прав, того, что ты перечислил там нетуть. Косяк.

Однако все же скажу свои 5 копеек. Это несколько нецелевым использованием попахивает. Что есть листвью? Отображение некоторых данных в расширеном варианте, чтобы пользователь выбрал те данные, с которыми дальше будет что-то делать. Имхо шаманство с сабитемами - это уже нецелевое использование. Может в сторону других контролов посмотреть?

Ну да. Слив .net защитан. Не все гладко в дотнет королевстве. Однако многих проблем можно избежать, если не слишком зарываться.

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

>Бедный вы несчастный. Вот если бы сразу начали с С/С++, никакая жаба и не понадобилась бы.

Так и ипался бы конем всю жизнь.

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

>Возьми любой контрол, например JDialog, и кинь из его windowOpened события экспепшн. Гуру ммать.

Ну кинешь ты его - где ты его собрался ловить? Это во первых. Во вторых - если ты не понял то листенеров может быть несколько, и не ты один такой умные его туда добавлять, и если ты будешь выбрасывать оттуда исключения, то работа этого приложения (как и его написание) превратиться в кайф немерянный. От таких как ты защищаться придется - потому что выкидывают из последовательных нотификаций листенеров исключения, когда порядок листенеров неизвестен, да и вообще этот весь процесс может происхоить в EventQueue.

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

>Что-то я по инету не видел сайтов с сотнями компоненточек под жаву, значит как-то народ обходится без чужих поделий...

+1. Хотя Борланд очень старался пропихнуть своим JBuilderом идеологию Delphi в жабку - да как то не выгорело у него.

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

>sf.net тоже не нужен? А как же принцип "берем GPL софинку и дотачиваем под свои условия"? Это ведь тот же поиск компонент только в профиль

Не тот же. Я писал немножко на делфи начиная с 1вой под 3.11 и на жабке занимаюсь - знаю достаточно наорду, чтобы видеть отличия. Жабщик на sf.net лезет чтобы не изобретать велосипед - потому что все написано до нас. Делфист проникнувшись идеологией Component Palette, и толпой мусора, который родили тут же разные Rx и прочие, подходит к проблеме по другому - он лезет на кладбища компонентов, чтобы решить проблему. Если компоненты нет - проблема обычно не решаема, либо решение строиться в виде кривой суперпозиции существующих компонентов. Чтоб писать, например, нужные нестандартные визуальные контролы - это вообще редчайший зверь в мире делфи.

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

>Хочется посмотреть на того человека, который будет с БД на БД прыгать.

Ну посмотри. Ты что - ничего кроме софта только для себя (своей конторы, заказной на одного клиента) не пишешь? Любой человек который пишет софт коробочный, массовый, либо платформы/фреймворки - об этом беспокоится.

>public void windowOpened(java.awt.event.WindowEvent e) { throw new Exception("I'm some exception."); } }

Вопервых если уж приспичило написать пакость то RuntimeException, во вторых - за такое убивать надо, как по форме так и по смыслу.

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

>> Хочется посмотреть на того человека, который будет с БД на БД прыгать.

> Ну посмотри. Ты что - ничего кроме софта только для себя (своей конторы, заказной на одного клиента) не пишешь? Любой человек который пишет софт коробочный, массовый, либо платформы/фреймворки - об этом беспокоится.

Внесу свои 5 копеек. Кросс-БД - штука двуяикая, и попахивает 1С-SQL. Если проект заточен под фичи конкретной БД (или двух БД, моему FlexdocERP в принципе пофиг под сайбейзом он бегает или под MSSQL ибо с кровью сердца забил на Watcom и юзаю T-диалект) - то есть возможность вовсю заюзать умные серверные фичи. И то с выходом десятого сайбейса, где наконец-то девелопера допустили в святая святых - жабные SP - у меня случился острый приступ пальцевой чесотки :) А кроссБД-шные заморочки при соответствующей доле энтузиазизма приведут к использованию БД как хранилища без логики. ИМХО.

>> public void windowOpened(java.awt.event.WindowEvent e) { throw new Exception("I'm some exception."); } }

> Вопервых если уж приспичило написать пакость то RuntimeException, во вторых - за такое убивать надо, как по форме так и по смыслу.

Ну я ж говорю - есть товарищи которые даже из конструктора норовят эксепшн кинуть. А недавно в одном проекте увидел...

(голосом Михаила Задорнова: ТИХО!!!!!!!!!!!!)

this = null;

(голосом Михаила Задорнова: можете дышать :) )




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

> Ну кинешь ты его - где ты его собрался ловить?

в void main() ловить будет :) или по примеру борладна -

try
TApplication.Create;
except ...

:)))

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

>А кроссБД-шные заморочки при соответствующей доле энтузиазизма приведут к использованию БД как хранилища без логики. ИМХО.

Согласен. Тут надо исходить из целей. Есть у меня проектик, который в принципе построен на возможностях постгреса PL/pgSQL, PL/Perl + посгресовский поиск регекспами и регексповые функции - тут уж никокого кросс-БД не светит и не планировалось. А если ничего особо такого нет или стоит задача поддержки нескольких баз....

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

> От таких как ты защищаться придется - потому что выкидывают из последовательных нотификаций листенеров исключения, когда порядок листенеров неизвестен, да и вообще этот весь процесс может происхоить в EventQueue.

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

Если уж собрался отвечать, то читай ветку целиком, а не выдерай фразы из середины.

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

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

Это называется не проблема, а Manifest Static Typing. В C++ ты тоже будешь ругаться, что не можешь сделать метод виртуальным, если он виртуальным не объявлен? Если не хватает RuntimeException, сдизайнь код так, чтобы соответсвующее исключение было продекларировано и бросай. Если код чужой - подумай, возможно автор совсем не хотел, чтобы оттуда вылетало что-попало.

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

> Это называется не проблема, а Manifest Static Typing. В C++ ты тоже будешь ругаться, что не можешь сделать метод виртуальным, если он виртуальным не объявлен?

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

> Если код чужой - подумай, возможно автор совсем не хотел, чтобы оттуда вылетало что-попало.

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

Поясню. Тебе не кажется странным повышать качество кода программиста ограничениями языка (с определенным снижением гибкости), а не объяснением почему и что делать плохо?

Хотя ладно. Ты прав, я - нет, на том и остановимся.

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

Ошибки в дровах успешно будут заменены ошибками в самой яве.

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

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

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

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

Где? Нет никакой разницы. Это декларация, сигнатура метода, манифест, который в статически типизированных языках ограничивает область применения этого метода. virtual в плюсах показывает, что метод может иметь модифицированное поведение. abstract что должен. Декларированный Exception что может бросать исключения определенных типов. Отсутсвие - что не должен - этого никто не ждет. Все это (статическая типизация, Design-by-Contract, Liskov Substitution Principle, Covariance/Contravariance, etc) имеет близкие цели. То что ты говоришь - это прямой случай из LSP (смотри про исключения): http://en.wikipedia.org/wiki/Liskov_substitution_principle

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

>Тебе не кажется странным повышать качество кода программиста ограничениями языка (с определенным снижением гибкости), а не объяснением почему и что делать плохо?

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

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

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

Странный ты какой-то, неадекватный прямо даже скажем. Погугли чтоли GoF, "Gang of Four", в конце концов выкачай и прочитай введение в букварь программиста под названием Design Patterns. Этой книге 12 лет, считается библией. Вот еще ссылочка. Это азы. Сейчас вся страна начала потихоньку их осваивать. Раньше умудрялись "программировать", не зная азов. Далеко не надо ходить, сообщение от сего дня http://www.sql.ru/forum/actualthread.aspx?tid=353867

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

>Ну тогда нас с тобой на пару бить будут... я от академических паттернов тоже не тащусь :)

Кстати, fact of life, вся либа java.io насквозь использует паттерн Decorator, построена на нем. Как же вы ее использовали, и не подозревали об этом? В паттернах нет ни грама академичности, это лишь шаблонные решения стандартных заморочек, которые кто-то записывает и стандартизирует и дает им громкие названия. Всего навсего. Их не выдумывают на конференциях. Их описывают и систематизируют, как бабочек

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

>прочитай введение в букварь программиста под названием Design Patterns. >Этой книге 12 лет, считается библией.

Читал. Подобные книги замечательны тем, что их можно прочитать для общего ознакомления и поставить на полку. Иногда доставать, стряхивать пыль, перечитывать и ставить на место. Трехтомник Кнута смотрится на полке особенно круто, внушает приходящим гостям благоговение :)

> Кстати, fact of life, вся либа java.io насквозь использует паттерн Decorator, построена на нем. Как же вы ее использовали, и не подозревали об этом?

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

"А внутрё у ей неонка" (c)

> В паттернах нет ни грама академичности, это лишь шаблонные решения стандартных заморочек, которые кто-то записывает и стандартизирует и дает им громкие названия. Всего навсего. Их не выдумывают на конференциях. Их описывают и систематизируют, как бабочек.

C момента накалывания бабочки на булавку бабочка теряет возможность летать, зато приобретает умное латинское название. Буквально на днях читал "AJAX Patterns", там специально рядом с названием каждого паттерна рисуют значок типа "применяется часто", "применяется редко", "имеет чисто академическую ценность". После этой книжки взялся за "AJAX Hacks" - и получил массу удовольствия по сравнению с чтением нудного сборника паттернов.

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

> Читал. Подобные книги замечательны тем, что их можно прочитать для общего ознакомления и поставить на полку. Иногда доставать, стряхивать пыль, перечитывать и ставить на место. Трехтомник Кнута смотрится на полке особенно круто, внушает приходящим гостям благоговение :)

Мха! В точку! А вообще зря ты это сказал. Сейчас накинуться ведь. Точнее уже накинулись.

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

> Сейчас накинуться ведь. Точнее уже накинулись.

Ничего, брызги слюны по http не передаются ;)

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

>Трехтомник Кнута смотрится на полке особенно круто, внушает приходящим гостям благоговение :)

Што, правда без знакомства хотя бы поверхностного с трехтомником можно написать что-то сложнее гостевой на Perl, реально работающее и не тормозящее?

Знаешь, парни, которые "писали" ЕГАИС, думают точно так же как ты. "Зачем нам чему-то учиться, мы и сами с усами" А в результате вся страна без вин сидит, и президент строит премьер-министра и требует навести порядок. А виноваты полдюжины быдлокодеров, которые "и без паттернов как-нибудь программировать умеют"

>А то наворотили вокруг элементарных и очевидных вещей кучу умных терминов, обозвали паттернами - как врачи и юристы в средние века...

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

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

> Што, правда без знакомства хотя бы поверхностного с трехтомником можно написать что-то сложнее гостевой на Perl, реально работающее и не тормозящее?

Я ж говорю - _прочитать_ и поставить на полку.

> Знаешь, парни, которые "писали" ЕГАИС, думают точно так же как ты. "Зачем нам чему-то учиться, мы и сами с усами" А в результате вся страна без вин сидит, и президент строит премьер-министра и требует навести порядок. А виноваты полдюжины быдлокодеров, которые "и без паттернов как-нибудь программировать умеют"

Нет, виноваты как раз не кодеры. Как показывает опыт, в 80% случаев очень большой кусок вины лежит на постановщиках задачи, 18% - на архитекторах, и 2% - на кодерах. А вот система ICECUDA (не помню, по-моему так пишется хотя могу и соврать) работает на таможенных терминалах по всей Европе... и ничего... кстати на яве написана :)

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

Чукча не писатель. Чукча даже не читатель. Когда я родился, мышек в руке не было... "если б я родился девочкой - совсем бы скучно было" (c) :) Кстати, в виду отсутствия мышки развлечения когда-то были другие - например подвешивание над столом огромной простыни с таблицей, какая команда 80286 процессора сколько тактов занимает :)

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