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 am an experienced Java programmer, and I want to create a complex web application requiring dynamic pages, drawings, etc (take SO as an example). Do I have to learn javascript/html in order to create such an application?

It is not that I don't want to learn another language (I've done this before), but technology on the javascript environment seems to change so fast that when you finish learning one framework it is already obsolete. I have checked a number of java framework for web development (spring, play), but not deeply. So can these frameworks (or other possible java frameworks that I'm not aware of) be used without learning html/javascript? I also have some python experience. So if I can do the app in python it is also an option.

share|improve this question
19  
short answer: YES!...... long answer: YES!!!!!!!!!!! –  rlemon Dec 19 '12 at 19:03
1  
Further points: You don't need a framework, in fact, you should stay away from them and abstraction libraries while learning Javascript. Abstraction libraries (by definition) will not help you learn the language or APIs. Pop into the Javascript room and ask some of the room owners / regulars this question. –  rlemon Dec 19 '12 at 19:05
1  
Not 100% the same question, but I always find this answer useful when people ask about "shortcuts". programmers.stackexchange.com/questions/122191/… –  rlemon Dec 19 '12 at 19:21
3  
no, you can pay others to do it –  Jason Sebring Dec 20 '12 at 0:17
    
It's like asking "do I need to know Java to write Android apps" or "do I need to learn Objective-C to write iOS apps" - you can avoid it, but not writing native code will hurt you. –  TehShrike Dec 20 '12 at 2:00

10 Answers 10

up vote 32 down vote accepted

You don't have to learn JavaScript and HTML to create web applications.

But you will.

If you really want to write webapps in mostly Java, have a look at the Google Web Toolkit, which does vast amounts of Java to JS, and can satisfy a good chunk of the code needed for a webapp. Django is a similar framework for Python.

And if you really want to avoid writing HTML there are vast amounts of templates and What-you-see-is-what-you-get editors out there.

But you see, regardless of the abstraction framework and HMTL templates you start with, at some point you'll be dissatisfied with the presentation. And so you'll get enough HTML/JS on your hands to change the one tiny little thing you want. And another thing. And another.

And then one day you'll wake up in a cold sweat.

enter image description here

And that's how you'll learn. That's how a lot of us learned, back in the era of point-and-click website makers like Geocities. After a while, if you're serious about the web, you'll learn the languages of the web, intentionally or not.

So you don't have to learn HTML and JavaScript to make a site like StackOverflow. But if you really try and make a site like StackOverflow, you won't be able to stop yourself from learning them.

share|improve this answer
1  
When I first read the question, my thoughts were exactly the same as this answer. But since every technology has its pros and cons, you might want to have a look at programmers.stackexchange.com/questions/38441/… before you decide. Best of luck! –  Apostolos Kritikos Dec 19 '12 at 19:29
    
If you aren't able to build a good looking presentation with html/css only, you simply missed the bus. –  ott-- Dec 20 '12 at 22:21
    
It's a lot harder to use anything you learn after you've introduced a disaster to your front end via a CMS or a really crappy dominating library like EXTJS. –  Erik Reppen Dec 23 '12 at 16:21
    
+1 You don't need to know JS and even if you resist you will suddenly one day just know it. –  Spoike Jan 8 '13 at 9:07

Let's consider some possible solutions to the scenario "I need to do some web stuff":

  1. Hire someone else to do it
  2. Use an elaborate framework that magically transforms non front end stuff into front end stuff (html, css, js)
  3. Do it yourself

We will ignore #1 because we're awesome like that. We're left with two choices. Which to choose, which to choose...

#2 is enticing. It means you can stay in your comfort zone, which is quite comfortable, especially if you added a slushy machine and some couches. But let's consider what happens to the framework you're using:

  1. It bugs out
  2. It gets outdated
  3. It doesn't fully match your expectations
  4. Any other software-related problem.

You're a dev, so it mustn't be hard to consider all the possible ways a product (especially a library) can break in many spectacular ways, ripping your sofas and toppling the slushy machine, painting everything in bright magenta.

In any of those scenarios, you'll have to come back to reconsider the options discussed in the beginning of the answer (only this time replacing the framework in #2), with an added 4th option: Try and fix it on a micro level. In other words, learn the web-stack in a shallow way, only necessary to hack together a solution to that specific problem.

Is it worth it? Depends. You may believe that the framework will never fail you, and you might be right. And you might be wrong.

I propose a hybrid solution: First, learn the web-stack. You don't have to spend a lot of time on it, you don't have to be l33t h4x0rz like that 14 year old from down the street who can add glitter to MySpace pages, you just need to have a basic knowledge of what's going on. Then, if you see that it's the best scenario for you, choose a framework.

Now your comfort zone is a little larger. It might even have a TV or an ABBA: Greatest Hits album proudly on display. Now if something breaks, you'll know how to fix it. Now you have a choice. And having a choice is always better than not having a choice.

share|improve this answer
    
Upvoted just for making me chuckle. It's also good advice. –  Ed Hastings Dec 20 '12 at 21:58
    
Upvoted for good advice. It also just made me chuckle. –  rlemon Jun 4 '13 at 18:42

Do you absolutely positively have to?

No.

But if you want a moderately modern web app, then you probably should. There are ways around it, but they're abstractions of what's really happening. If you're okay with that, then go for it. If you're not, then you'll need to learn the language.

share|improve this answer

a big, complex web-app is very hard and tedious to develop alone, even if you already master html and javascript.

my advice would be to look for a possibility to develop the web-app with a team, or at least a front-end developer.

like this you concentrate on what you already know well and let a specialist do the front-end.
developing the front-end is much harder than it initially seems, for example due to the fact that the front-end needs to work in many different browsers on several operating systems.

share|improve this answer

Frameworks like Spring and Play will be great for handling your application logic but even they don't abstract away the necessity of having to build a front-end for your web application. Its not fundamentally different than having to build a front-end for your desktop application, just a different execution.

This isn't something that should scare you too much. Your development process will still largely be the same, except that you need to dress your data up with HTML and CSS instead of with desktop GUI elements. You can learn the basics of both HTML and CSS in an afternoon, and you can make your interface as a complicated or as drop-dead simple as you like.

My advice is to visit sites that are similar to the one you intend to build and then view the HTML source - you'll get a feel for how those sites flow in terms of HTML design.

share|improve this answer

Yes to make any sort of modern web application you need at least a basic knowledge of HTML and to be competent in JavaScript. Using frameworks for a language like python or Java is possible and you can build the majority of your site's functionality using them, but even for a basic site you need a little HTML because its the only thing a browser actually understands for displaying content. You can sort of get away with not knowing JavaScript, but that would make your site a lot less user-friendly because you would need to reload pages any time you wanted to update anything, also you would be losing out on a very useful tool to hack a site together and deal with browser compatibility issues and CSS shortcomings.

You are a bit to worried about how much things change in web development, JavaScript really hasn't changed since it was implemented, also there really is only one must know framework JQuery which really makes JavaScript a lot nicer to work with. Most of the other rapidly changing stuff is really flavor of the month and not really required to be known

share|improve this answer

I will join the chorus in saying that that you will most likely have to learn HTML/CSS/Javascript at some point.

However, you seem to be asking for frameworks that do not invovle writing front-end code. I can relate to that sentiment. Unfortunately, there's very few mature technologies that abstract that stuff (for a number of good reasons).

Take a look at Wt and the Java version JWt. It might be what you are looking for.

In a nutshell, that framework attempts to make web-apps widget-centric so that rather than writing HTML templates you code UI as if it was a desktop application. It uses some new technologies like web sockets, does progressive enhancement, and generally abstracts you from having to do much front end.

share|improve this answer

HTML is the language of the web, so you'll have to know it somewhat.

Javascript not so much ... you can use PHP, etc. as well. Javascript isn't 100% necessary.

If you're building a website entirely I'd recommend Javascript for sure, since it's supported by basically all browsers, and will retain compatibility between different browsing programs.

But if you're just creating web applications, this applies much less than if you're creating a website.

share|improve this answer

Knowing Javascript is a plus as it helps you creating web apps. I think HTML is the best to have a good solid knowledge on and HTML5 is nice because it integrates well with CSS3 and JavaScript. I would recommend browsing through the courses at Microsoft Virtual Academy.

They have over 200 different course options and they’re all free and expert led. I personally benefited from their course on app development training with HTML5. Good luck!

share|improve this answer

There are web application frameworks that abstract away HTML and JavaScript, but honestly the cure is often worse than the disease. (eg, Google Web Toolkit).

Do yourself a favour though, and learn jQuery, CoffeeScript and/or other javascript frameworks to spare some of the most tedious details. Similarly, consider using something like Haml or HamlPy to work with a nicer version of HTML.

share|improve this answer

Your Answer

 
discard

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.