So there is a website that I want to build. It will be a review aggregator and probably a bit more. I want to build this website for three reasons:

  1. I really think this website will be used by a reasonable amount of people
  2. I want to practice my programming skills since currently at my job I am doing mostly scripting
  3. Maybe learn a new language. I am currently torn though since my immediate reaction is that I want to use Java since I know it relatively well, like it, and feel it will allow me to put something up as quickly as possible. I would also like to use an existing Web Application Framework.

If I don't end up going with Java I would probably go with one of the following:

  • C#/.NET - I prefer static languages, and this is similar to Java.
  • Python - I use this at my job superficially and it seems that a lot of people are using it.
  • Ruby - Seems to have a very well established framework
  • Scala - Has some similarities to Java but from what I read it's a different paradigm

So I guess my question is under these circumstances do you think that I should build a website using a known language or a new one?

closed as off topic by user40980, Jim G., GrandmasterB, thorsten müller, Kilian Foth Jun 13 '13 at 7:11

Questions on Software Engineering Stack Exchange are expected to relate to software engineering within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.


Definitely learn a new language or library with this project in these conditions. Your website seems like it's not under pressure to ship immediately, so you can take the time to learn something new as part of building the website. You can build a couple of toy ones to start, and iterate to a stronger understanding of the tool you're trying to add to your toolset.

Learning a different programming paradigm is a great way to expand your horizons as a programmer, and leave you better prepared to deal with unusual code later in your career. This is one of the ideas behind the book Seven Languages in Seven Weeks, which would be a great way to stretch your brain. Even if you go for something you know better in this case, grab the book and work on it. It can give you insights into programming problems you might not otherwise have.

Of the options you list, I think learning Scala would probably stretch your brain the most, as it is the most different paradigm to Java on that list. Scala has some strong functional programming aspects, which provide a contrast to the OOP paradigm of Java. Scala works on the JVM, so there are probably plenty of Scala development tools that would plug into tools you're familiar with from your Java development. This could get you up and running sooner, and reduce overall frustration.

I'm primarily a Python programmer, so I think this would also be a good choice. Learning more Python could make you more productive at work. Also, Python is a multiparadigm programming language, which would give you an opportunity to learn elements of functional programming and imperative programming paradigms in a language that you already have some familiarity with. in a language There are a number of web application frameworks for Python with years of history behind them. I'm most familiar with CherryPy, but it's old and weird and you might be better off starting with Pyramid, Django or something simple like WebOb.

Most importantly, however you choose to build this project, keep stretching yourself and challenging yourself. A broader understanding of programming and programming languages makes it easier to later pick up new languages and frameworks when you inevitably need to do so. It's a great investment into a vital programming career.

  • Thank you, I really enjoyed your answer. I will probably decide between Python or Scala. I will probably prototype between both of them and see which one I feel is a better choice. – user93780 Jun 13 '13 at 7:03

Maybe JWT: http://www.webtoolkit.eu/

Instead of a new language, I'm suggesting a new library, that may be useful in another language (c++) later.

It's a new style (as far as I know) of website frameworks; it treats the webapp as a gui app, so instead of the request+response style, it's more a like an event based programming model.

There's a Java version and a C++ version. It's a bit low level compared to a lot of frameworks out there, like if you want to resize images to create thumbnails, you'd just use your external lib of choice.

It has good fall-back mechanisms, like it'll use websockets if available, then fall back to ajax, then to http.

It's cool because a lot of code you can write all on the server, like event handlers, and if it can predict the DOM changes, cached on the client for instant results in JS, or even work (to a limited extent) with just http.

Check out the widget gallery: http://www.webtoolkit.eu/widgets/forms

  • 1
    I was looking through there and it seems neat. Figured I'd throw the Java version link up: webtoolkit.eu/jwt – Rig Jun 13 '13 at 1:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.