yury_finkel: (Default)
[personal profile] yury_finkel
После долгих исканий и метаний (например, пытались смотреть OpenSwing), всё-таки решили остановиться на «классике»: NetBeans Platform. Пришло осознание, что систему нужно полностью переписать, причём не изобретать велосипед, а сделать так, как люди делают. Поэтому поставил себе NetBeans IDE (кстати, потыкавшись и пообвыкшись, понял, что оно не многим хуже Eclipse и даже IDEA, зато в него интегрировано многое) и пытаюсь разобраться с фреймворком. Пока не очень понятно (но что-то начинает проясняться), и ещё пока не ясно, как организовать 3-tier-архитектуру (не знаю даже, как это сказать по-русски: трёхъярусную архитектуру?) — а она нам очень нужна. Судя по всему, надо будет использовать что-то вроде Hibernate на серверной стороне (ещё и с ним придётся разбираться).

Минус во всём этом один: приходится изучать большой материал, совершенно новый для меня (я даже термины-то не все понимаю), да ещё и по-английски. А с возрастом я чувствую, что способность к обучению у меня всё ниже и ниже. Ей-богу, мне проще что-то самому кодить, чем разбираться в том, что понапридумывали другие... На работе меня утешают, что, мол, изучение нового — это тренировка мозгов против маразма :) Но башка всё-таки пухнет. :(

(no subject)

Date: 04/02/2012 18:24 (UTC)
From: [identity profile] bezbogny.livejournal.com
Если вам нужна мощно разветвлённое клиентское приложение, то тогда да, NetBeans Platform (хотя и Эклипс в качестве платформы сгодится, у нас тут в Украине одна фирма торгует бухгалтерским приложением на эклипсовой платформе). К сожалению, Оракл закрыла SwingFramework, а ведь весьма мощная штука была.
Что касается двух других слоев, то вот эта книга как раз об этом. Поскольку она "from beginner to professional", то я уверен, что она - лучшее чтиво на эту тему. Предлагаемую ораклом книгу я осилить не смог, а вот эту - запросто :) И поскольку я, как и вы, на джаву пришел с делфей, то уверен, она и вам подойдет.

(no subject)

Date: 05/02/2012 08:12 (UTC)
From: [identity profile] yury-finkel.livejournal.com
Ну да, я уже понял. Эту книжку я уже просматривал, потом буду штудировать основательно. Только я пока ещё не понял, как оторвать клиент от прямой связи с БД, мне нужно, чтобы между БД и клиентом был ещё один слой (на сервере), который брал бы данные из БД, как-то их перерабатывал и отдавал бы клиенту (в XML, JSON или как-то ещё). Это для нас принципиально важно.

Я сейчас грызу талмуд «The Definitive Guide to NetBeans Platform» (только начал ещё).

(no subject)

Date: 05/02/2012 12:12 (UTC)
From: [identity profile] bezbogny.livejournal.com
Так и оторвать. Предполагается, что между БД и клиентом находится сервер приложений, относительно которого БД находится локально. Хотя для большей производительности БД и может крутиться на отдельной машине, но с ней общается только сервер приложений, а клиент о ней вообще знать не обязан.
GlassFish или JBoss - это самые популярные свободные сервера.
Соответственно, при такой архитектуре клиент и вовсе может быть "тонким", т.е. набором веб-страниц. Если же вы делаете "толстый" клиент, то по всей видимости, серверное приложение у вас будет набором веб-сервисов.

(no subject)

Date: 05/02/2012 13:18 (UTC)
From: [identity profile] yury-finkel.livejournal.com
 >Так и оторвать.
В том смысле, что клиент не должен обращаться к БД напрямую, не должен содержать SQL-запросов.
 >Предполагается, что между БД и клиентом находится сервер приложений, относительно которого БД находится локально. Хотя для большей производительности БД и может крутиться на отдельной машине, но с ней общается только сервер приложений, а клиент о ней вообще знать не обязан.
Ну да, именно это я и имею в виду.
 >Соответственно, при такой архитектуре клиент и вовсе может быть «тонким», т.е. набором веб-страниц.
Это у нас фактически было раньше, но практика показала, что веб-страницы — это неудобно (даже если это SmartGWT). Решили делать на клиентской стороне полноценное приложение на Swing.
 >Если же вы делаете «толстый» клиент, то по всей видимости, серверное приложение у вас будет набором веб-сервисов.
Серверное приложение должно отрабатывать запросы клиента, делая свои запросы к БД, преобразовывая данные и отдавая их клиенту.

(no subject)

Date: 05/02/2012 13:25 (UTC)
From: [identity profile] bezbogny.livejournal.com
--В том смысле, что клиент не должен обращаться к БД напрямую, не должен содержать SQL-запросов.
Да, он их и не будет содержать. На клиенте вы будете получать готовые объекты своих классов.

-- Серверное приложение должно отрабатывать запросы клиента, делая свои запросы к БД, преобразовывая данные и отдавая их клиенту.
Так веб-сервисы и работают.

(no subject)

Date: 05/02/2012 13:38 (UTC)
From: [identity profile] bezbogny.livejournal.com
--На клиенте вы будете получать готовые объекты своих классов.
Т.е. разумеется, вы будете получать данные в XML или JSON, но джава имеет готовые инструменты, которые позволяют по этому поводу не париться. Грубо говоря, выглядеть это будет так:
ClassForSend sendedObject.setData(data);
RecievedClass recievedObject = StaticClassThatImplementsIO(sendedObject);
int x = recievedObject.getAnotherData();

(no subject)

Date: 05/02/2012 13:42 (UTC)
From: [identity profile] yury-finkel.livejournal.com
Понятно, именно это мне и нужно. Буду штудировать умные книжки :)