I'm pretty new to web development, so I had some basic questions to get me pointed in the right direction.
For the last week I've been learning the rails framework, and from what I understand, this framework is great for building a website, but you still need javascript to build nice front-end interface/apps that run in the browser. Is this understanding correct? If not, why does javascript appear to be so essential to almost al websites? In other words, what can you do with js?
Also, I was wondering if it is necessary for me to learn javascript now that there are tools like GWT that compile Java into js. I ask because, I am proficient in Java but have no knowledge when it comes to javascript. How far can GWT take me before I need to learn javascript, or do I have to learn javascript at all?
If someone could point me int he right direction by answering these questions, I'd be very grateful.
Thanks
GWT compiles Java to JavaScript, but you still will need to learn about web development.
I have seen many projects going wrong with GWT because people just started writing Java code and did not care about the underlying platform (the browser) at all.
If you don`t want to care about the browser use some plugin technology (if you are an app inside a controlled environment), otherwise first learn about how to build apps with HTML + JS + CSS.
Eventually you will discover that GWT is a great toolkit for writing fast JavaScript apps in Java, that packs many best practices for building web apps inside the toolkit. It has good abstractions, but every abstractions leaks so you will need to have good knowledge of the browser. You will save on things like keeping away from the bad parts of JavaScript.
I'm working with GWT now, and I haven't had to use Javascript at all yet. I'd say for most websites, GWT should be fine.
Related
I have a django-based web application that is a mixture of jQuery and several other JavaScript libraries. It has been suggested that consolidating everything under Google Web Toolkit would make moving things forward a little easier. So I have a few questions regarding this:
Could we keep our HTML/CSS or would we have to rewrite?
Would GWT integrate easily with JavaScript libraries that we already use? (datejs, jQuery.scrollTo, etc)
Would you recommend rewriting everything due to GWT's different workflow?
First, a caveat: there are different degrees to which you can "consolidate everything under Google Web Toolkit." You could just write a client-side JavaScript library in GWT, or write the entire client-side implementation in GWT, or write the client and the server in Java using GWT. I'll try to answer each of your questions for each of the use cases.
Could we keep our HTML/CSS or would we have to rewrite?
If you're just writing a client-side library in GWT, you could keep the HTML/CSS mostly intact. If you're writing the entire front-end or if you're writing the client and the server in GWT, you could probably port most of the HTML and CSS, but you would have to make a lot of little changes.
Would GWT integrate easily with JavaScript libraries that we already use? (datejs, jQuery.scrollTo, etc)
For the most part, yes.
If you're just writing a client-side library, then absolutely yes (because the GWT code would be just another library). If you're writing the entire front-end or the client and server in GWT, life will be harder because you'll probably have to write JSNI wrappers, which will take a little work but not be terrible.
Would you recommend rewriting everything due to GWT's different workflow?
No, I wouldn't. This isn't so much because of opinions on GWT versus JavaScript, but more because a total rewrite is usually a bad idea. A bunch of refactoring over time is a good idea, but throwing away code wholesale is usually a bad idea, because that code has been tested. If you throw away a bunch of code rather than refactoring over time, you lose bugfixes that you have made over time, and you make the same mistakes, test for them, find them, and fix them all over again.
I have just been looking at the GWT and i am impressed by what i have seen but i do not really understand how it is used to when creating web applications.
For example, when im programming in PHP or JSP creating a simple app that lets users register, adds the detailes to a database and then allows them to login is pretty simple but i was wondering how GWT does this?
When doing this in GWT, would GWT widgets be used to construct a frontend(client) that accepts user input and then sends it to a server which is written using pure Java, the Java then does all of the data processing and database interfacing?
If my understanding is correct, is GWT just a way to write javascript frontends in an easier way?
Have you looked into the GWT Overview? I think this line explains it the best:
The GWT SDK contains the Java API
libraries, compiler, and development
server. It lets you to write
client-side applications in Java and
deploy them as JavaScript.
Basically, you write your code in Java, all the while using the GWT to create complex UI's, etc. When you "compile" it, it is highly optimized JavaScript that translates well to multiple browsers, including web platforms.
Whatever language you want to use server-side does not matter - ASP.NET, PHP, etc - it will all work with GWT because GWT is, ultimately, JavaScript.
Basically, Google is trying to make it simple to develop web applications in a familiar language, and doing all the underlying work for you. I'm sure there is someone else who can further expand on the capabilities and advantages of GWT, but I hope this helps!
Exactly. "In the end, it's just JavaScript", you can "Use the backend language of your choice"
I'm building a website for my friend's startup.
I'm currently building it on PHP, MySQL, Apache. Everything is going pretty smooth till now, but one of my friend recommends i move to a Java framework because that'd be better when the site becomes bigger.
I don't have any Java Knowledge and I have adequate knowledge of PHP but I'm a fast learner
Should i continue with PHP (can PHP be used for big sites?) or should i move to a Java Framework?
Any suggestions please.
PHP can be used for big sites. Take a look at Facebook. End of story...
When someone says something like that, you need to have them justify what they are saying. PHP is scalable and versatile. Java has it's strengths and weaknesses too, just like any other programming language.
Since you are a novice in PHP, you probably won't reuse much of the code that you are using to build the initial site. I know you plan to, but the likelyhood that you will is very slim. Go with what you know.
PHP has been used by a plethora of sites. Google, Yahoo, Facebook, etc, etc all use some php for all their sites.
I think regardless of whether you go with PHP or a Java solution you're going to have to learn a new set of frameworks/libraries. If you don't have experience building anything more than a toy website (including any you've done through education) there will be plenty to learn from both paths.
Research some frameworks for both PHP and Java and make up your own mind based on what you've read. If it's such a long project you'll have plenty of time to familiarise yourself with whichever option you choose.
Everything for a website is possible with php. No need to worry. we can make heavy sites with php in a easier way then java framework. You can use php frameworks like zend framework, codeigniter. They are scalable and easy to learn have lot of Components (libraries). And provides client services to bigger sites like twitter,amazon,yahoo etc.
:)
At least 1/3 of the top 20 sites on the web are using PHP in one way or another. Languages used by the rest include Python and Ruby. I don't see that any of them are using Java.
PHP is fine to use, ive made websites before using PHP...
Id suggest you stick with PHP but challenge yourself and expand your knowledge.
Yes. Big sites can be build using PHP. Examples are Digg.com and Facebook (which compiles to c++, but indeed).
Coming from PHP with some Java Struts 2.0 experience any tips/tricks on learning GWT? I have been looking at some tutorials but just wanted to know if anyone has some great gems to pass along?
As someone that has done PHP, Struts2 and GWT, a good tips from me for someone that is coming from web framework like Struts2.0/PHP would be:
Throw away the old mindset, the mindset that a web framework works in request-response way. That's not how GWT works. GWT is a full ajax framework. Get a good understanding of AJAX and throw away those old mindset to get a good grasps of GWT.
Think in application development and not website development. That would affect the way you build navigation in your application with GWT.
You are not building hyperlinks to navigate between html pages, but you are using an event listener to update a partial content in your application. Get a good understanding of this.
With that in mind, always remember that you are not throwing back full html pages, but just updating a partial content in your application
Get a good understanding of Java anonymous class and inner class because you will use this alot in GWT. This is something that is used rarely if you are building with Struts2.0
The last tips would be to learn how to organize your code. If you can do it from beginning, please do so. Because you can write everything in one class if you want to. A good tip would be to take a look at this video on best practice on GWT.
Nothing beats Google's GWT quickstart (IMO):
http://code.google.com/webtoolkit/gettingstarted.html
I agree with karim79. Also add this to your list: http://examples.roughian.com/
GWT developers still need good HTML and CSS skills. It is sometimes useful to build up chunks of HTML on the client or server side (performance, skinning etc.) and not build every part of your GUI using GWT Widget trees in Java code.
Our framework (GWT Portlets) will help you structure your application. It includes a simple demo application in its own directory that you can copy to start a project.
There are zillions of Java web application frameworks.
95% were designed before the modern era of AJAX/DHTML-based development, and that means these new methods are grafted on rather than designed in.
Has any framework been built from the ground up with e.g. GWT + Extjs in mind?
If not, which framework has adapted best to the world of forms with dynamic numbers of fields and pages that morph client-side?
Echo2 / Echo3 by Nextapp (www.nextapp.com) is totally awesome.
Advantages over GWT:
1) It is not limited to a sub-set of java like GWT
2) It is easier (in my estimation) to learn
3) Has extremely robust design studio for almost drag and drop designing.
4) It is very fast, and works very well on all platforms browsers
5) You can write your application using either java script or java
6) It has great and straight forward methods for handling events and actions.
Personally I think that for any web-application in which you are trying to integrate java and speedy delivery I wouldn't hesitate to pick Echo3 or Echo2.
If you're starting from scratch. I'd have to say Google Web Toolkit. I have to say it is incredibly powerful. You get keep using most of your Java tools. Plus, you don't have to duplicate code that exists on both the server and the client, it just gets compiled differently for each area.
I'd consider REST-style frameworks as well as the other recommendations here- Restlet or Jersey may be good choices for the backend, while you use something like JQuery or GWT on the front end. Both frameworks can easily produce JSON, and the REST style provides a nice clean line of demarcation between your client application and your server source; I find that JSF can make that demarcation pretty muddy.
I use JSF and IceFaces. Although JSF has a few limitations, IceFaces seems to work pretty well and has ironed out a few of the problems with JSF.
I haven't used a really good AJAX Java framework as yet, although Echo2 looks interesting.
I like the stripes framework. It lets you use whatever javascript toolkit you want.
Here is their documentation on AJAX
GWT is quite powerful and easy to use (all Java, no Javascript/HTML/CSS coding). If Google has their way it will be a dominant framework/tool in web applications development, and for good reason. It already works with Google Gears (which allows offline access to web apps) - and more than likely will be optimized to work within Google Chrome.
DWR
I use this to dynamically populate drop downs, and even filter them on the fly based on user input in other places on the form.
I like the combination of JBoss Seam and Richfaces, especially with the JBoss tools that are extentions to Eclipse - makes building these sort of RIA's incredibly easy.
Wikipedia contains some useful comparisons:
Comparison of JavaScript frameworks
List of AJAX Frameworks
Your choice depends on several different factors including whether you want the "work" done client-side (most javascript frameworks) or server-side (echo2 etc.). Other things worth looking at are tools like OpenLaszlo that provide Flash (I think) out of the box, but drop back to DHTML if there is no Flash player present.
Unfortunately I think the decision comes down to balancing several competing cocerns. Check out the comparisons and try them out - most come with online demo's for you to try.
Aptana has a server side frame work called Jaxer. This is from their site:
Jaxer's core engine is based on the same Mozilla engine that you'll find in the popular Mozilla Firefox browser. This means that the execution environment you use on both the client and the server are the same. It's Ajax all the way through and through. That means you only need one set of languages -- the languages that are native to the browser -- to create entire applications.
This framework is open source and has a very nice IDE based on Eclipse. Aptana is also working on a Javascript implementation for ActiveRecord called ActiveRecordJS. Potentially you could use this both client and server side with their framework.
GWT is one of the best AJAX framework that I used ever. Most important thing about this framework is that its maintained by Google. And Everyone know "Who is Google ?"
GWT is used by many products at Google, including Google AdWords and Google
Wallet. It's open source, completely free, and used by thousands of
enthusiastic developers around the world.
GWT provide rich widgets that can be used to built any application. Almost all the widgets they have.
Another important point is GWT is continuously developing and its also have stable release which is very good thing. Another thing Google has also released GWT-Material which is again a very good thing because everyone is moving toward material.
I hope this will help you!!!