Что изучить Java или Qt С++?

У меня давольно абстрактный вопросик, что стоит изучить Java или Qt С++?) знаю что сравниваю 2 обсалютно разных зверя, но все же, хочется услышать совет.

Цель - изучить язык, для создания кросплатформенных window (GUI) приложений

Как видно из цели, хочу писать window програмки, для начала для себя, потом может и комерческое ПО (кто его знает куда меня глаза заведут). Вообще window приложения писал на Visual Basic 6, Visual Basic .Net, Delphi, C++ .Net, C#, так что с window приложениями немного знаком. В свое время учил С++, писал даже курсовую на нем) Сейчас пишу исключительно на PHP)

Так вот, может кто дельно посоветовать, что мне учить, Java или Qt C++? и обоснуйте пожалуйста свое мнение. Спасибо)

P.S. Сейчас сижу на Ubuntu, то так же хочу чтоб созданные мною программы можно было легко портировать на другие OS

1 ответов


Давно работаю с Qt/C++ и недавно (пару месяцев назад) начал знакомиться с миром Java. Поэтому расскажу свои впечатления:
1. На Qt проще создавать приложения, которым требуется качественный (субъективно) интерфейс пользователя. На Java придётся больше потрудиться, заставляя окна выглядеть нужным образом.
2. Не видел аналогов QtGraphicsScene/QtGraphicsView на Java (хотя возможно искал плохо).
3. Для Qt лучше всего программировать на Qt Creator (в плане интеграции с Qt), но возможностей в ней по сравнению с той же Eclipse существенно меньше. В частности после Eclipse сложно привыкнуть к отсутствию проверки орфографии в тексте программы, отсутствию MyLyn, автоматическому проставлению import и т.д.
4. Насчет разницы в производительности - для Desktop задач, которые приходилось решать, разницы не заметил.
5. Java компилятор работает быстрее по сравнению с MingW (компилятор от Microsoft не пробовал).

P.S. Переход, что с Java на C++, что обратно - проходит "болезненно". В том плане, что сложно программировать и на чем-то одном, а потом перейти на другое - всё-таки разные подходы к программированию. Потому для себя решил пока Desktop преимущественно на Qt/C++, а web-приложения на Java (к PHP возвращаться не хочется).


"Qt Jambi is a port of Qt to the Java programming language" -> qt можно использовать в java приложениях


Java - монстроподобный тормозной язык, требуюший виртуальной машины.
Qt - это фрэймворк над нативным C++, который кроме кросплатформенности и GUI даёт ещё кучу удобных и полезных плюшек.


PyGTK


Собственно все основное было сказано выше. Но тем не менее внесу свою ложку дёгтя в общую бочку мёда рассуждений. Я программирую на С# около 5 лет, с платформой dotNet знаком почти с момента ее создания. И большинство проблем и ошибок, которые я встречал, были скорее из-за собственного незнания или непонимания чего-либо в платформе. С другой стороны в стеке dotNet постоянно выходят какие-то новые продукты и технологии, поэтому ошибки не исключены. Это нормальный рабочий процесс. Могу точно сказать, что dotNet-программисты сейчас востребованы, поэтому изучать С# или возвращаться к его изучению вместе с кучей других связанных технологий имеет смысл. По поводу кроссплатформенности - честно скажу это миф. Вернее я не встречал разработчиков, которые проблему кроссплатформенности решали просто изучением той или иной платформы программирования. Всегда были, есть, да и наверное будут какие-то ограничения и уступки по кроссплатформености. Это как история JavaScript и браузеров. В стеке dotNet, в плане кроссплатформености интересен проект Mono. Причем "Мигель" похоже трудится день и ночь, поэтому сейчас очень много программистов обратили на Mono свое пристальное внимание:). А вообще, я думаю самыми кроссплатформенными есть и остануться различные паттерны программирования. И вот на них то прежде всего стоит обратить внимание. Чего тебе и желаю!)))


Насчёт перспектив... Не уверен, что Ява такой уж перспективный язык, особенно после покупки Sun Oracl'ом. На Яве сейчас в основном пишутся или серверные программы, или мобильные, большая доля из которых приходится на игры. На Qt лучше всего проектировать именно прикладные приложения: программы, утилиты. Не так распростнанён, как Java, но может набрать обороты. В любом случае, стоит разобраться, что тебе нравиться больше, а уж заработок и там, и там найдёшь.


По опыту работы как с java так и с c#


Если собираешься писать только программки для windows то идеальное для тебя решение будет оставаться на технологиях net (c#,vb) т.к. очень много плшех ты получаешь автоматом и не надо плясать с бубном одно.

Имхо Java - мало пригоден для создания win декстопных приложений, это больше все таки серверный язык.


Из личного опыта скажу, что о QT у меня не самые радужные впечатления, своя нормальная IDE повилась достаточно недавно, да и то она достаточно специфична. В Eclipse же постоянно вылетали какие-то проблемы, то автокоплит не работает, то дебаг...(а может руки у меня кривые)) Помнится такой моменты был, забыл поставить после окончания класса знак ";", дак она мне пицот ошибок выдала, не обмолвившись и словом, что ошибка синтаксическая! Пол дня вдвоем искали ошибку!!!
Было это года 2 назад, может они уже поправили... но факт, как говорится, имел место быть.

Из плюсов конечно - технология сигналов, слотов, неплохая переносимость, отличная графическая библиотечка (чего только стоит QTCollision!).

По поводу Джавы замечу, что переносимость у нее не самая замечательная. Однако технология постарше, спроектировна получше.

Если цель зарабатывать, то советую крепко задуматься, потому как Java гораздо перспективней - и оплачивается выше и спрос на нее больше. За 2 недели пока работу искал, на hh.ru появилась только одна QT вакансия, причем зп средненькая.