Dead Krolik
|
|
« : 03-06-2006 12:27 » |
|
Собственно вопрос больше мировоззренческий, я чувствую что морально созрел до явы. Хочу выучить. Но ума не приложу где она используется и вообще применяется. Т.е. когда я начинал изучать пхп, я знал что на нем делают веб-сайты и для изучения взял и стал переписывать один скрипт на текстовых файлах для работы с базой данных (не сдирал, а творчески переосмысливал, изучал способы работы в пхп). Отсюда вопрос - какая область языка наиболее востребована на рынке, и что гуру могут мне посоветовать писать для изучения языка, плюс на какие приложения можно в это время смотреть и изучать их опыт. Над чем конкретно коммерческим сейчас люди например работают.
Встает вопрос о среде и версионности языка. У меня есть NetBeans+что_там_с_ним_последнее_стабильное_было. Может есть что-то лучше. И вопрос по поводу версий - я не шибко понимаю, но различие между J2EE и SE всякими они в чем выражаются. Только лишь в предлагаемом наборе компонент и инструментов?
|
|
|
Записан
|
|
|
|
Hoha
Гость
|
|
« Ответ #1 : 04-06-2006 09:07 » |
|
Основные приложения:
1) Десктоп и апплеты. Программы для "просто юзверей" мало пишутся, т.к. возникает проблема установки (нужно ставить Java-машину, это не всем по силам или просто влом). Поэтому десктопы чаще пишутся под конкретного заказчика. Для большинства таких приложений хватает ядра языка + стандартная библиотека. Это есть SE.
2) Мобильные приложения (телефоны и пр.). Там свой мир, я далек от него и ничего путного сказать не могу. Своя версия платформы (ME). Как я понял, все крутится вокруг оптимизации.
3) Серверные приложения, чаще ориентированные на веб: от простых сайтов на Servlets+JSP до очень серьезных сервисов. Для упрощения разработки таких приложений разработан (и продолжает развиваться, конечно) набор спецификаций и расширений библиотеки. Это EE.
JDK поставить 1.5, т.к. много полезных изменений со времен 1.4. Хотя на работе могут заставить писать и под 1.3 - когда проект старый, например. Насчет IDE не заморачивайся. Неконкурентные почти все сдохли. Лидеры: Eclipse (бесплатная) и IDEA (платная). Первые несколько программ лучше собрать из командной строки руками. Это сильно помогает понять как работает класслоадер и пр.
|
|
|
Записан
|
|
|
|
Hoha
Гость
|
|
« Ответ #2 : 04-06-2006 09:25 » |
|
Про источники информации. java.sun.com - само собой. Куча туториалов, форум на котором сидят гуру. Образцово-показательные (!= лучшие) реализации спецификаций. jcp.org - здесь основные игроки Java-рынка разрабатывают спецификации вместе с коммьюнити в виде т.н. JSR. Можно посмотреть, куда собираются двигать Java дальше и ознакомится с уже существующими спецфикациями. Есть еще куча сайтов, ищи в Гугле. Из русских знаю: juga.ru, jug.ru, jugu.ru (последние два почти постоянно лежат ) Книжки по языку здесь уже обсуждались несколькими темами ниже.
|
|
|
Записан
|
|
|
|
Dead Krolik
|
|
« Ответ #3 : 04-06-2006 16:32 » |
|
Большое спасибо за внимание к теме. Возник вопрос - почему заказчики требуют создавать десктоп приложения на яве? Только ли из-за переносимости? Можешь ли привести пример веб-сервиса, например апач это сервис? Или я не о том подумал.
Что лучше сначала изучать - десктоп (я так понимаю Swing) или что-то другое? Точнее не так - что прибыльнее и что более востребовано в реальных конторах, пускай даже России.
И нет ли IDE написанной не на яве, ибо много памяти жрут.
Все изменения 1.3, 1.4, 1.5 касаются языка или касаются дополнений и компонент?
Последние два сайта как ты и сказал не фурычат. Первый оч даже интересен.
|
|
|
Записан
|
|
|
|
Hoha
Гость
|
|
« Ответ #4 : 05-06-2006 07:46 » |
|
почему заказчики требуют создавать десктоп приложения на яве? Самая простая причина - server side написан на Java, логично и клиента писать на ней. Java проще C++ во всех отношениях, а для подавляющего большинства приложений мощь C++ не требуется. Тем более - найди программиста, который ее может выжать . Java vs .Net ищи сам, я в holy wars не участвую. В Java все стандартизировано (ты это уже понял, если зашел на jcp.org) - одна и та же спецификация исполняется множеством вендоров, есть выбор. Есть еще фактор разрекламированности, не без этого. Можешь ли привести пример веб-сервиса, например апач это сервис? Ты про httpd? Это веб-сервер. Кстати, про Apache. Смотри проект Jakarta на apache.org . Апачевская реализация веб-контейнера, например, самая популярная (Tomcat). Как и реализация JSF. Не говоря о Struts, который там родился. + куча полезных библиотек Пример веб-сервиса - поиск в Гугле. Ты регистрируешься, полученный ключ позволяет твоему приложению пользоваться возможностями поиска на Гугле и т.д. Что лучше сначала изучать - десктоп (я так понимаю Swing) или что-то другое? Точнее не так - что прибыльнее и что более востребовано в реальных конторах, пускай даже России. Сначала изучай non-GUI Java. Фактически, это SE без мультимедии - Swing'а, звукового API и пр. База, без которой ты просто не сможешь работать. Из не-Java: основы баз данных (терминология, SQL, простенькое проектирование), XML (и, особенно, XSLT-преобразования). Потом думай сам . Если ты занимался вебом и тебе интересно продолжать, смотри на веб-приложения EE. Копай в сторону Servlets, JSP, JSTL, Struts, JSF. Насчет денег, больше все равно платят DBA, так что Java не при делах . И нет ли IDE написанной не на яве, ибо много памяти жрут. Апгрейди машину. Все изменения 1.3, 1.4, 1.5 касаются языка или касаются дополнений и компонент? Новое вносится в библиотеку в каждой версии. Из остального - в 1.4 появилась новая машина HotSpot, которая сильно быстрей старой. В 1.5 много дополнений на уровне языка - generics, аннотации, продвинутый for для итерации по коллекциям и т.п.
|
|
« Последнее редактирование: 19-12-2007 21:28 от Алексей1153++ »
|
Записан
|
|
|
|
Dead Krolik
|
|
« Ответ #5 : 05-06-2006 18:01 » |
|
>Java vs .Net ищи сам, я в holy wars не участвую. Ну дык если я спрашиваю про яву, то я уже все решил для себя. Ява мне кажется перспективнее, при том что ни о том ни об этом я мало что знаю. Но тот факт, что мелкософт второй уже многое решает. Про сервисы я так и думал, в принципе. Просто я чета не представляю что это так мега распространено. Это может просто слово такое умное "веб-сервис", а по сути унифицированный протокол, обычный listen в сокете, отдача и прием данных. >Если ты занимался вебом и тебе интересно продолжать, смотри на веб-приложения EE. Ннет. PHP вполне подходит для этой цели. Зачем туда прицепили яву я не представляю (только лишь ради того, что бы показать как она могуча?). >Апгрейди машину. Я понимаю что моя тачка морально устарела, но сам я пока не зарабатываю, а родители не миллионеры. P.S.Что есть "DBA", пару слов скажи, что бы легче в гугле было ориентироваться. P.P.S. И я все-таки пытаюсь вытянуть, хоть какой-то пример, на котором можно потренироваться
|
|
|
Записан
|
|
|
|
Hoha
Гость
|
|
« Ответ #6 : 06-06-2006 08:33 » |
|
Про сервисы я так и думал, в принципе. Просто я чета не представляю что это так мега распространено. Это может просто слово такое умное "веб-сервис", а по сути унифицированный протокол, обычный listen в сокете, отдача и прием данных. http://www.soaprpc.com/faq.html#q1http://java.sun.com/javaee/5/docs/tutorial/doc/ , глава про веб-сервисы Ннет. PHP вполне подходит для этой цели. Зачем туда прицепили яву я не представляю (только лишь ради того, что бы показать как она могуча?).
http://java.sun.com/javaee/5/docs/tutorial/doc/ , глава про веб-приложения P.S.Что есть "DBA", пару слов скажи, что бы легче в гугле было ориентироваться. http://en.wikipedia.org/wiki/Database_administratorP.P.S. И я все-таки пытаюсь вытянуть, хоть какой-то пример, на котором можно потренироваться Эмм, ну "hello world" напиши .
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #7 : 06-06-2006 08:47 » |
|
Что такое веб сервисы и как с ними работать очень советую узнать На мой взгляд лучше всего начать разведку боем: идем в гугл и набираем "google web service", получаем страничку с кучей линков о том что такое гугловские веб сервисы, что позволяют делать и как ими пользоваться не интересен посковик гугла, набираем допустим "amazon web service" или "google maps web service" или "yahoo web service" (принцип думаю ясен) и получаем инфу о том, как можно пользоваться многими сервисами не бродя по страничкам, а создав свою гую (а может и не только гую).
Более простого интерфейса к веб сервисам чем в .NET я не видел, но в яве должно быть тоже не слишком сложно
PHP конечно круто, пожалуй единственный LAMP язык достойный уважения разработчика обьекто-ориентированных приложений, НО он как и любой другой язык из LAMP подходит только для ограниченного набора приложений в первую очередь это приложения где практически всё состояние хранится в БД и вся информация для генерации страниц может быть получена с помощью запросов к БД, в этом случае PHP рулит, но дело в том что веб не ограничивается этим классом приложений есть различные виды приложений которые используют информацию из разних источников (например другие приложения), соединенных очень разными типами соединений (TCP/IP, CORBA, Web Services, RMI, .NET Remoting), для таких приложений у PHP просто напросто нет того бэкенда, который есть у Java или .NET есть также приложения, активно использующие в своей работе бизнес транзакции, которые не могут быть смоделированы с помощью транзакций БД, обычно таким приложениям также требуется гибкая политика управления доступом к сервисам, PHP с такими требованиями никак не справиться, тут на помошь и приходит бэкенд в виде сервисов управления транзакциями (JTA в Java) и контейнеров приложений с поддержкой политик безопасности
Думаю не стоит начинать с чего-то сложного вроде изучения работы контейнеров J2EE, для начала стоит пописать немного простеньких консольных приложений чтобы разобраться с синтаксисом языка, стандартной библиотекой (алгоритмы, коллекции и т.п.), сборкой и запуском приложений (обязательно узнай как пользоваться ANT(nANT) [и Maven]), выбрать IDE (Java - IntelliJ Idea или Eclipse, .NET - Visual Studio 2005 + ReSharper)
а дальше тебе решать что делать: можно взятся за окошки (Java - Swing, .NET - WinForms) или делать веб гую (Java - JSP(Struts), JSF(MyFaces,Shale), .NET - ASP.NET) поиграться с веб сервисами (Java - AXIS, в .NET встроена поддержка веб сервисов) очень полезно научиться рабоать с БД (Java - JDBC, Hibernate, .NET - ADO.NET) а там дело само дойдет до контейнеров и всего остального.
IMHO Java vs .NET: Java круто потому что спецификации есть чуть ли не все случаи жизни (конечно преувеличиваю) и самое главное - есть Jakarta, JBoss и т.п. (сайт Jakarta надо обязательно изучить если будешь писать что-то серьезное на Java, там очень многие стандартные вещи уже написаны). .NET круто потому что это продукт MS - очень тесно интегрирован c Windows и вообще всеми продуктами MS (особенно приятна интеграция с COM, что позволят писать различные плагины и примочки ко множеству виндовых программ).
|
|
|
Записан
|
|
|
|
Serega
Гость
|
|
« Ответ #8 : 06-06-2006 09:01 » |
|
если нужна задачка для раздумий - глянь http://www.touchgraph.com/TGGoogleBrowser.htmlможно много узнать на основе анализа результатов поиска googl или amazon, а получить эти данные с помощью веб сервисов проще простого
|
|
|
Записан
|
|
|
|
Dead Krolik
|
|
« Ответ #9 : 06-06-2006 17:11 » |
|
О, скока написали
Hoha >Эмм, ну "hello world" напиши Уже написал, пока не шибко понял что там делать с package, думаю дело времени. Даже трэды потрогал. Мега вещь, когда трэды встроены в язык, я даже подумал сколько времени я бы потратил на такое консольное приложение, вспоминал какие параметры у CreateThread() а если захотел запустить в линуксе так pthread_create(), тока пока не понял как их синхронизовать, но думаю разберусь.
О веб-сервисах теперь знаю больше, значительно больше.
Serega Пасиб, записал на бумажку, буду мучить.
Ну если будут дополнения по методологии, то с удовольствием выслушаю.
|
|
|
Записан
|
|
|
|
infinity
Гость
|
|
« Ответ #10 : 08-01-2009 20:03 » |
|
А у меня тут возникла проблема с выбором темы на дипломную работу. Хотелось бы что-то сделать на java (EE\SE). Но суть проблемы в том, что я, чесно говоря, не совсем представляю какие именно задачи решаются с помощью этого языка. В этом топике вроде как в общем можно понять что к чему ..... но все равно мало конкретности. В общем, профи, что можете подсоветовать, какую прогу можно написать для фирмочки .... если в качестве базы есть средних размеров строительная фирма, в которой из ПО установлены только автокад, 1С и АВК, и нет своего сайта.
|
|
|
Записан
|
|
|
|
ObamaBarak
Гость
|
|
« Ответ #11 : 08-01-2009 22:40 » |
|
Dead Krolik, есть три вида JAVA программ: апплеты, мидлеты и сервлеты. Под ПК, сотовый и сервер, соответствено. Основано все на ООП. Используешь методы классов, стандартных и не очень стандартных библиотек. Так, в целом не сложно.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #12 : 08-01-2009 22:45 » |
|
ObamaBarak, посматривай на дату - 2.5 года прошло...
infinity, ничего не понятно. Можно вопросы поконкретней задать?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
infinity
Гость
|
|
« Ответ #13 : 09-01-2009 01:21 » |
|
ObamaBarak, посматривай на дату - 2.5 года прошло...
infinity, ничего не понятно. Можно вопросы поконкретней задать? [/quote] Можно и поконкретней. Скоро надо будет писать диплом. Темы нет (и не будет). Известно лишь, что в дипломе должна быть рабочая программа, которая коим-то образом облегчает жизнь предприятию. А теперь суть проблемы - я никак не могу придумать что моя программа будет делать. И поэтому решила поспрашивать у тех, кто реально занимается написанием прог для предприятий - может подскажете, что можно выбрать, чтоб не было слишком сложно, но и соотвествовало уровню (диплом). Я понимаю, что наверное как правило делают заказы на сложные и большие программы ...... но .... может у кого-то есть какие-то идейки ..... . Просто мне вообще в голову ничего не приходит. (на всякий случай уточню - речь идет не о коде программы, интересует сама идея, т.е. задачи программы)
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #14 : 09-01-2009 05:28 » |
|
infinity, у тебя на примете есть предприятия, где будешь проходить практику или диплом будешь делать без связи с реальностью? Если есть, то в какой области?
P.S.: Не стоит стремиться сделать в дипломе что-то очень нужное и полезное - вероятность его внедрения стремится к 0. Это шанс по тренироваться. Просто выбери, обоснуй, зачем это надо, спроектируй и сделай.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
infinity
Гость
|
|
« Ответ #15 : 09-01-2009 09:45 » |
|
Да, есть. Строительная фирма. из ПО установлены 1с автокад и АВК. Выделенного сервера нету, просто хаб с модемом соединен (но если надо, можно будет организовать) . Есть локалка. До 20-ти компов.
Т.е. суть моего вопроса в принципе тоже самое что и у автора этого топика - область применения джава. Понятно что это язык программирования, и на нем можно писать программы от калькулятора и до ........ Но ведь у каждого языка своя особенность. Почему-то те, кто заказывает программы на джаве, несмотря на медлительность выбирают именно этот язык ....... т.е. я так понимаю, у него есть своя ниша. Т.е. если я для диплома выберу какую-то примочку например для отдела снабжения какая-то прога по складу (хотя зачем, если есть 1с) - то возникает логический вопрос, почему я не написала это на С++ (ведь быстрее) ........... вот я и хочу узнать ..... какие именно проги на джаве пишутся как правило на практике (это раз) .... и что из этих задач можно выбрать мне (ну, чтоб не сильно сложно было)
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #16 : 09-01-2009 10:11 » |
|
infinity, выбор языка обосновывают обычно: 1. Я его лучше знаю. 2. Требование заказчика/работодателя. 3. Необходимость стыковки со сторонним ПО, имеющим ограниченную по языкам поддержку. 4. Доступность и правомерность использования среды разработки. 5. Так звезды сложились...
Java имеет, на мой взгляд, два основных достоинства: кроссплатформенность (если не использовать JNI) и строгость самого языка. Сам я не любитель строгости и на Java не программирую.
Кстати, скорость - не главное в офисной/складской программе.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
ObamaBarak
Гость
|
|
« Ответ #17 : 09-01-2009 19:38 » |
|
infinity, тебе надо начать с того, что ты поймешь работу всей фирмы по направлениям. Например: отдел проектирования (архитекторы, дизайнеры), отдел внедрения (технологи, архитекторы), финансовый отдел (сметчики), отдел маркетинга и рекламы (дизайнеры, полиграфисты), менеджеры, отдел реализации (прорабы, бригадиры, каменьщики, сварщики и т.д.), бухгалтерия, отдел кадров. Посмотри, какая есть рутина (оборот документов, например). Автоматизируй это с помощью твоей программы. То есть пересылка документов из одного отдела в другой по сети.
|
|
|
Записан
|
|
|
|
|