I want to learn a new programming language. I have in mind stuff like
- file alteration monitoring
- embedded databases such as SQLite
- widgets that support drag and drop
- rich text with widgets inline with the words
for my pet project.
I heard lots of opinions of both of them. They seem to agree that Java is tougher to use and Java code is less readable. But that QT cant implement nifty features like the ones I listed above: its more KDE than QT.
I want to choose the language that generates easily maintainable code and a smooth learning curve. And adding a new feature should be straightforward: search for it, find a tutorial, write my own code; no intellectual gymnastics or low-level tinkering.
This question may be too wide in scope, so please tell what other factors are relavent to a newb.
If you want an easier learning curve, go for Java.
It matches all your requirements, offers good portability (Qt does too, to be fair), and its GUI layer (Swing) has the required niceties. Note that Qt is a set of libraries, not a language. Its underlying language is C++, plus a few tricks that lets it use a ‘signal/slots’ abstraction that is quite useful (google for meta-object compiler).
I would go for either Java or a higher-level language (Python for instance) for your project. Note that you can use Qt from Python, using the PyQt bindings.
For an embeddable database in Java, you could try hsql.
Note that no language will ‘generate easily maintainable code’. The task is up to you. To learn about software engineering in general, I heartily recommand Eric Raymond’s text, The art of Unix programming; you can read it online for free.