Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was wandering if there are any frameworks like Google Web Toolkit to create Web Apps? (Apps like Evernote, Spring Pad, Google Docs, etc.).

I am fluent in Java but could learn a new language without much problem. So is there any kind of framework that would allow me to write Web Apps without worrying much about UI element design and client-server communication?

I have heard of one-- Vaadin. Is it something like what I am looking for? If yes, are there any alternatives?

I'm hoping to make a Web App similar to this: Gantter. Mostly the UI and smooth usability.

share|improve this question
add comment

6 Answers

up vote 8 down vote accepted

Python is a great language to start with, Flask is also a great web framework for people who want to learn the fundamentals of web development, it's called a micro-framework, it only does a few things, unlike other frameworks.

You can use 3rd party libraries, or even your own to provide new functionality.

This is better suited for a beginner since you won't learn too much at once.

Here's a "hello, world!" app in Flask:

from flask import Flask
app = Flask(__name__)

def hello():
    return "Hello World!"

if __name__ == "__main__":

However, if you want to stick to Java, there's Play!, it's easy to learn, and has a decent feature set.

share|improve this answer
I checked out both-- and both looks promising. If I'm going to develop a WebApp that's similar to (UI and usability only. Not the functionality) to Gantter , what do you think would suit me best? I'm more-than-average fluent in Java and know a little Python. –  Roshnal Dec 11 '11 at 12:59
@Roshnal Play certainly has more features, but that means you'll have to learn more, but if you're not sure about your python skills, I think you should go with play for the time being, and you can learn Flask later. –  Mahmoud Hossam Dec 11 '11 at 13:04
Thanks a lot! I guess for the time being, I'll go with Play. Are there any special benefits (in contrast to Java) from learning Python (for both Web and Desktop)? –  Roshnal Dec 11 '11 at 13:14
@Roshnal you'll write considerably less code in Python, Java tends to have a lot of boilerplate code. –  Mahmoud Hossam Dec 11 '11 at 14:18
Ah! Got it now.. Thanks for the tip! But I think for the moment, I'll use Play with Java for the Web App and learn Python when I have more time. Is Python good for developing apps for platforms like Ubuntu? Or more for Web Apps? –  Roshnal Dec 11 '11 at 14:56
show 3 more comments

I do suggest Django framework it is based on Python (learning Python is very easy). This framework is great in separating your webapp code from UI but it does NOT do the UI for you. you may also take a look on Django Book

---- illustrative Example from Django Book----

The MVC Design Pattern

Let’s dive in with a quick example that demonstrates the difference between the previous approach and a Web framework’s approach. Here’s how you might write the previous CGI code using Django. The first thing to note is that that we split it over four Python files (models.py, views.py, urls.py) and an HTML template (latest_books.html):

    # models.py (the database tables)

    from django.db import models

    class Book(models.Model):
        name = models.CharField(max_length=50)
        pub_date = models.DateField()

    # views.py (the business logic)

    from django.shortcuts import render_to_response
    from models import Book

    def latest_books(request):
        book_list = Book.objects.order_by('-pub_date')[:10]
        return render_to_response('latest_books.html', {'book_list': book_list})

    # urls.py (the URL configuration)

    from django.conf.urls.defaults import *
    import views

    urlpatterns = patterns('',
        (r'^latest/$', views.latest_books),

    # latest_books.html (the template)

    {% for book in book_list %}
    <li>{{ book.name }}</li>
    {% endfor %}
share|improve this answer
What exactly do you mean by "..separating your webapp code from UI but it does not do the UI for you.." ? Sorry, I'm not much familiar with web development. –  Roshnal Dec 11 '11 at 8:31
Django designed to let the developer do the logic code totally separated from your UI design (HTML) for example : you write the code which only deal with database in a Models.py and you write the logic of your webapp in another file views.py and write the URLs configurations code in another file urls.py (you link the URLs with the views)!! all of this without considering how your UI(html) looks at all!! finally(and may be in parallel) you edit necessary portions only of the html (which represents the UI) with some script (template language)check The MVC Design Pattern section in Django book –  Abdurahman Dec 11 '11 at 8:50
OK. Came close to understanding :) Thanks a lot anyway! See my edited question. –  Roshnal Dec 11 '11 at 9:01
+1, for willingness to show an example. –  Emmad Kareem Dec 11 '11 at 11:25
Django is too big for a beginner to handle, it tries to do everything, that might confuse someone who's new to web development. –  Mahmoud Hossam Dec 11 '11 at 12:39
show 2 more comments

Python is a great language but in my opinion PHP is easier to learn - especially coming from a Java background; which is exactly how it was for me. They're pretty similar syntactically (in certain areas of course) and it's really easy to setup your environment.

  • Windows: Just download XAMPP
  • Mac: Just download MAMP
  • Linux: you can just yum install httpd/php/mysql-server mysql

That said, there are many great frameworks for PHP. CodeIgniter is supposed to be easy to learn.. It's light and well-documented. I personally use the Zend Framework. CakePHP is also pretty easy to learn. I would recommend those two for beginners over Zend for the sake of simplicity alone.

A simple example (filename: example.php):

    <title>Very Simple Example</title>
        $headline = 'This is a page headline';
        echo "<h1>{$headline}</h1>";

        $links = array(
            'http://framework.zend.com' => 'Zend',
            'http://codeigniter.com' => 'CodeIgniter',
            'http://cakephp.org' => 'CakePHP'

    <ul class="menu">
        <?php foreach ($links as $link => $label): ?>
                <a href="<?= $link; ?>"><?= $label; ?></a>
        <?php endforeach; ?>
share|improve this answer
yum install httpd then yum install php and finally yum install mysql-server mysql –  mmmshuddup Dec 11 '11 at 8:49
Thanks for the pointers! But does CodeIgniter (or PHP for that matter) do the server-side processing? And the UI? –  Roshnal Dec 11 '11 at 8:55
Well I assume by "UI" you mean HTML.. And yes PHP is a server-side scripting language (processed at run-time). Those frameworks have great APIs for separating business logic from view (UI) logic. –  mmmshuddup Dec 11 '11 at 9:28
I added a simple example demonstrating how to print HTML using a string variable and an array - then looping through the array using alternative syntax. –  mmmshuddup Dec 11 '11 at 9:38
Ah now understood. I guess I would choose PHP and create my Web Apps. Another thing-- how can I do all the calculations (like in J2EE, the Servlets) in PHP? Is it in the scope of PHP? And also can you please post some nice frameworks to get started (most importantly with nice UI components)? –  Roshnal Dec 11 '11 at 12:46
add comment

If you're looking for an easy, pre-packaged UI, I would take a look at JQueryMobile. True, it's designed for mobile devices, but boy is it easy to use and your apps look very slick.

Just have your Java/Django/PHP/whatever app spit out markup that utilizes the special JQuery Mobile html elements and incorporate the framework's wide array of list views, forms, etc. and you're good to go.

share|improve this answer
I already develop Android Apps. So I am looking for a way to create Web Apps for the apps I already have in the Android Market. And what did you mean by "..Just have your Java/Django/PHP/whatever app spit out markup that utilizes the special JQuery Mobile html elements and incorporate the framework's wide array of list views, forms, etc. and you're good to go..."? –  Roshnal Dec 11 '11 at 9:18
JQueryMobile is a UI framework for mobile web apps. What I meant by the above comment is that their templating system is very easy to use, and will take care of UI element design and (some) client/server communication for you. However, I'm not sure how easy it would be to run on top of Vaadin –  CamelBlues Dec 11 '11 at 11:54
I think you didn't get it.. I wanted a framework and/or a language to start Web App development. I only stated Vaadin as an example. The JQueryMobile you said looks really nice and promising, but at the moment, I only need to create Web Apps that will work on a PC browser. Anyway thanks a lot for your help! :) –  Roshnal Dec 11 '11 at 12:49
add comment

Take a look at ASP.NET MVC3. If you know Java then picking up C# should not be a problem.

MVC3 in my experience has been the easiest to understand compared to Django and Ruby on Rails. It helps you understand web development without trying to do anything too fancy or over complicate request handling. You have a controller, a model, and a view. That's it. And you are ready to develop. There is tons of documentation and videos that will make learning not only easy but satisfying.

Go get started.

share|improve this answer
add comment

I think the OP is looking for a framework that will enable them to write the server code, and automatically generate the requisite Javascript and CSS. I'm not sure, (having never used either) but this sounds like a job for Ruby on Rails / .NET? I think the Yii framework does something like that too. You might want to turn the problem on its head and use Node.js and one of it's frameworks (i.e Matador).

Having said that, even with frameworks, web developers are generally required to know a server language, css, html, JavaScript, a SQL derivative...it's a long list. Most devs I know specialised in either UX (read js, css) or a server technology (PHP, python-django, ruby-on rails) at first. You may not find your holy grail even exists...

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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