![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
DHT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.1.2013 Репутация: нет Всего: нет |
Добрый день,
перелопатил кучу языков: Delphi 7, Python 2.7, Go, C++. На данный момент только C++ (с Boost::Threads и libcurl) могут решить мою задачу нормально, но хочется взглянуть на Java, т.к. бенчмарк асинхронных клиентов поражает скоростью http://wiki.apache.org/HttpComponents/Http...ient4vsHttpCore Задача: 1) множество асинхронных одиночных запросов (до миллиардов) через SOCKS прокси с поддержкой SSL. 2) многопоточная отправка цепочек POST, GET, JSON, AJAX запросов через SOCKS прокси с поддержкой SSL. OS разработки: Windows 7 (64-bit). OS сервера, где будет работать скрипт: Windows Server 2003, 2008 (32-bit). 1) Подскажите пожалуйста какую версию Java мне изучать? 2) Какие библиотеки лучше подойдут для задача 1 и задача 2? 3) Какая библиотека нужна для создания GUI под Windows? 4) Насколько быстро работают потоки в Java? 5) Сколько потоков можно запустить на процесс? 6) Реально ли отправлять 1000 GET запросов в секунду используя многопоточноть и то же самое используя асинхронные запросы? 7) Не приводят ли блокировки в потоках (например, при получения IP адреса хоста или коннекта к серверу) к тормозам приложения? Простите за большое кол-во вопросов, но устал начинать изучать новый язык, а потом напарываться на его ограничения. Все вопросы исключительно под OS Windows. Спасибо большое заранее всем кто хотя бы дочитал до этой строчки ![]() |
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: нет Всего: 10 |
Смотреть в сторону Jboss Netty
В качестве "рекламы", все что написано Twiterянами на Scala - бежит поверх Netty. Если она не справится ("готовить" конечно тоже нужно правильно) - то Javу можно забыть для Вашей задачи ![]() 1) 7ку - 1.7 2) Netty 3) Зависит от времени которое готовы потратить на GUI. Основная - Swing, но нужно украшать и наращивать ее с помощью SwingX и т.п. SWT - полностью нативный вид, но тоже, только в комплексе c JFace Если совсем по крутому: использовать Eclipse RCP (пример работающего приложения и с открытыми исходниками RSSOwl) или Netbeans RCP - на Swing. 4) в сравнении - с чем? Вообще, они в Java - нативные, поэтому работают "очень быстро", хотя конечно на Си - можно реализовать быстрее. 5) да как бы сколько хотите. Сколько шедулер ОСи выдержит ![]() 6) см Netty 7) как напишете, так и будет. видел я "многопоточный" код, который из тотальных блокировок - однопоточным становился. Видел и lock-free код на Java. Это сообщение отредактировал(а) Skynin - 21.1.2013, 22:25 |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Главное отличие Java в том, нет полного контроля за уборкой "мусора". Но если для взаимодействия клиента с сервером используется интернет, который совсем неподконтролен, то непредсказуемость пауз на работу gc (уборщик мусора) приложения не является чем-то ужасным. К тому же, есть возможности оптимизации.
"Спорт высших достижений" на серверной стороне не обязателен. Теоретически всегда можно вместо совершенствования программ пойти по экстенсивному пути - добавить серверов, распараллелить вычисления (архитектурные решения). И это нужно не столько для "бенчмарков", сколько для повышения надежности системы, удобства поддержки и модификации. Т.е., сравнения скоростей чего-то на ABCD и X-- конечно интересны, но не принципиальны. Обычно в сложных проектах мастерство владения инструментом важнее инструмента."Используй то, что лучше знаешь". Java популярна в индустрии - сроки, сложность программирования, стандартные решения. Но ее тоже надо осваивать. Это сообщение отредактировал(а) COVD - 21.1.2013, 23:15 |
|||
|
||||
DHT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.1.2013 Репутация: нет Всего: нет |
Промо нравится. Посмторим на деле. Спасибо. Выбор пал на нее. Хоть Exclipse уже и стоит для Python, но не нравится мне он. Думал IDEA бесплатную версию, но там вышеупомянутый Netty (Jboss) не поддерживается.
На данный момент лучше всего я знаю Python, но, увы, в Windows он показывает совсем хилую скорость работы с сетью. Попробовал Google Go, но и тот в Windows блокируется при конвертировании имени хоста в IP адрес, т.е. эквивалентен в "скорости" с Python с его GIL (наверное, Гвидо Ван Росум на них плохо влияет ![]() Простите за глупый вопрос, но он как раз напрашивается. В Java же нет подобных глобальных блокировок и не важно в какой ОС запускать приложение, т.к. работь оно будет на JVM? Т.е. я не упрусь со временем в то, что Jаva приложение быстрое на Linux, FreeBSD и медленное на Windows. Верно? |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Разрешение IP адреса происходит через запрос к DNS серверу. Он может отвечать с задержкой, может вообще не ответить в отведенное время. Очевидно, это и есть основная "блокировка" и она не зависит от операционной системы и, тем более, от языка, на котором написана программа. Другое дело, что эти запросы не нужны, если адрес уже задан в виде ххх.ххх.ххх.ххх. Думаю, так и реализовано везде.
Это сообщение отредактировал(а) COVD - 22.1.2013, 14:21 |
|||
|
||||
DHT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.1.2013 Репутация: нет Всего: нет |
Тогда спрошу так: может ли приложение на Java запустить множество разных запросов к DNS серверу параллельно? И не ппиведет ли блокировка одного запроса к блокировке других? Уточняю, т.к. на Python и Go приведет к блокировке под ОС Windows. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Вы считаете, что в Питоне плохо реализованы сетевые операции и интересуетесь, лучше ли они реализованы в Java? Я не сравнивал. Предполагаю, что вы имеете дело с общими естественными ограничениями пропускной способности.
Это сообщение отредактировал(а) COVD - 22.1.2013, 18:04 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |