I am decent (or so I like to think) when it comes to making java swing applications, but I want to make the jump to web applications.
The problem lies with the fact that there's so much going on and so much different terminology being thrown around. I have no idea where to begin and it seems very daunting.
I've read up on a few things such as JSP and GWT, but I still can't seem to be able to make the jump. My question is: is there a specific flow used when making a web application to make everything seem to connect better, and if possible, could you recommend a good starting point for someone like me that comes from a solely desktop gui environment and wants to start developing web apps? Thanks for the help!
Both Swing and Web application still rely upon java keywords and terminology. java web technology work better when you use a framework . I suggest you start with Spring. It has MVC library that you can use, plus spring mvc has a large community online. However, Java Servlet is quite similar with what you have learn in java.
I am trying to develop a small project in college. My team mates want to go for Java technology while I am more interested in .net.
Is it possible to develop the web site using Java and then redirecting it to .net(asp.net,which is our final module)?
So that I can work on .net module while letting my friends work on Java. Summing it up, Is it possible to develop the project(web site) using java and .net both(in the same project)? I googled it but didnt found anything relevant.
can you please help.
Develop your website using HTML and JavaScript, may be you can use libraries like jQuery etc. For Back end develop web services. Because Web Services could be implemented in any language. You can change the underlaying language without breaking the website.
If there is a split in deciding technologies, you can break the project into modules. Now you can find a few modules which can be exposed as web services. So you can create webservices in whichever language you wish. This way you get to learn both the technologies and also get to learn more about webservices.
Few Useful links
Calling .net webservice from JAVA
Webservices: Introduction
When not to use webservice
IMHO just because as a team you cannot decide which technology to use, you should not jump into using webservices. They should only be used after proper evaluation and analysis. You might end up putting lot more effort than you planned.
i'm very new to the word Framework. I need to design some websites, i want to learn any Web framework for java. And hence this is the first framework i'm learning in my life, what framework i have to select?
GWT
JSF 2.0
Apache Wicket
Apache Tapestry
Struts
This is most popular frameworks as i know.
I like GWT, but you may choose what you want, it depends on your goals. To familiarize you can work with each
Although this is a fairly subjective question, learn Struts 2! (the 2 is important!) It is fairly simple, uses plain Java objects, the design is clear. You can start with a small project and expand as you learn.
This depends on what exactly you are trying to accomplish. Are you trying to write the backend server logic? Are you trying to implement a web-based UI that presents / communicates with that logic?
For creating a web-based UI in Java, you might want to try Google Web Toolkit (GWT). For the backend logic, there is Google App Engine. I'm sure there are lots of other frameworks that others will list.
I have a really simple J2SE app that consists of a couple of classes. I plan to make it available to my co-workers, and I've been thinking the easiest way would be for them to access it from a browser, instead of distributing the executable on each machine.
What's the easiest method/framework that would allow me to do this? This app is pretty targeted-- it will just perform the same isolated operation, and will have some activity against the DB --but the logic is already implemented on the app. The interface would only require some input from users (login,password,ip,etc), an action component to trigger the process and nothing else.
I've been thinking of a simple JSP/Servlet app for it, but wanted to see what's available now. If any how-to link is available, would be great.
Axis allows you to to create web services from existing java classes. But this may require writing a desktop client.
Grails framework can use existing java classes and is easy to use. It follows MVC pattern similar to Ruby on Rails.
If you don't need anything complex, and you're ready to to write html with System.out.println() thenjust write a simple servlet. There are many guides online, it's very straightforward.
If the application is simple, then use simple JSP/Servlet, otherwise MVC framework(Struts...) could be used here. But using MVC framework leads learning curve.
It's kind of trade-off: you could decide the learning curve is worthy or not in your application.
Sorry for asking this question, but I searched all Java-related questions, but I got more confused. I am still not clear what should I start with.
My main thing is building websites in Java, because someone told me that there are some machine learning or AI libraries available in Java which I can use in Java. So I decided to use that as it can reduce my work.
Now I don't know Java at all. Some people say the following are used to build websites, like:
Servlets alone can build a website
JSP alone can also build a website
Struts
Spring Framework with Hibernate
Seam
Java EE also for websites
I am confused. Where should I start from? Where does core Java fits in here?
I was thinking of perhaps learning Python as I know I have to learn Python only, not its variations.
So please guide me to one thing which can solve my basic purpose of using ready-made libraries of AI.
If I can do that with JSP then I will start with that.
But if I need to learn all of them, then it’s better if can start learning Python.
I have five months to finish the website.
I really don't know why there are many branches of Java for doing one thing.
To correct some misconceptions of yours:
servlets and JSP are Java EE
Seam and Struts can be used together with Hibernate as well
Spring MVC is a web framework. Spring as a dependency injection framework can be used together with any other framework.
there are many more options, like JSF, Tapestry, Click, Play, etc.
It depends on what will the site will be doing, but you can choose any.
Experience has shown that building complex HTML forms (especially validation) and Ajax functionality is hard to get right. You will most likely appreciate having a library to assist you with that. The same thing with database access.
Everything builds on servlets. Learn those in order to understand the libraries you will use.
I would suggest learning JavaServer Faces (JSF) with facelets. The easiest, while being powerful, is JSF 2 in Java EE 6. The easiest way to get started is to use NetBeans with GlassFish 3.
For static web pages, HTML alone is enough and if you want to make it more user-friendly and interactive, use JavaScript.
There are lot of frameworks you can use directly in JavaScript, like jQuery. Now if you want to make some more functionalities, like database interaction, then you will need either PHP, Java (JSP and Servlets) or .NET (there exist some more, but I’m aware of three only). Each of them have their library to interact with database.
Since you are interested in Java, go through Servlets, HTML, JavaScript, and JSP. Once this is done, you can look into JSF and EJB beans. So if you have knowledge of Java this will not take too much time, because the syntax is the same; the only difference is the concept.
So you will have a frontend (HTML, JS, and JSP) which will interact with the backend (Servlets and the database) which will be deployed in a Web container. To deploy, you can use an one of the available application servers, like Apache Tomcat, GlassFish, or WebSphere. To develop your application, you can use Eclipse as the IDE, which is one of the best IDEs I have used.
So decide your architecture and design, break it into components and start writing small applications first. Once you are experienced in small application, start writing an application where there are more things you have to care of, like load on database, availability, security, etc. For that, you can refer a very famous question on Stack Overflow, What technical details should a programmer of a web application consider before making the site public?.
The closest to core Java is servlets. No extra syntax, very minimal library, but no included functionality.
For building websites, the main thing is HTML and HTTP.
All technologies (including Enterprise Java or Server side Java) do the same—to understand an HTTP request and respond back with HTML. All that you mentioned do the same thing with a different level of sophistication.
Start with Wikipedia.org to know what technologies do what. If you are completely new to Java, go through the Sun tutorials, do sample programs, and get comfortable with Java packages, JVM and classes. (This might take a week or two).
To build websites using Java, you'll have to learn Java Servlets—everything else (JSP, Struts, JSF, and Spring(!)) are built on it. Get Head First books on Java and Servlets; they will be useful.
You can always build the page in Ruby or something that will give you a website very fast. For the AI stuff that analyzes the bought items for the recommendations, use something unrelated to the page that only takes the database to work with.
I would not mix the whole web page stuff with the AI computing. You can do the AI things that will take a long time and maybe should done on a different machine to have your webpage also responsive with C++ or Java in normal applications.
Choosing your front end technique because of later usage is a very dangerous thing. Using the whole Java EE concept and learning it from scratch will take you much longer than have a quick start with your page if you do it in Ruby or PHP.
You can then build the first version of the page and generate a user base. Start working on the AI stuff once you got some data with other technologies.
If your page has performance problems because your technology does not scale, you can always begin switching parts of the stuff out with a faster technology or maybe simply a bigger machine. Get your page running before you build it bulletproof for the thousand users you are expecting.
If you’re trying to build a website from scratch, with no prior knowledge, your best bet is to go with frameworks that provide a complete stack for web development.
If you aren't dead set on Java, you could probably start learning Ruby on Rails, which would be easier to start with (if so, go buy a Ruby on Rails tutorial which goes through all the necessary things for modern web development, from MVC to version control).
For Java, try:
Play Framework is very similar to Ruby on Rails. It will get you started very quickly, and hopefully (if you follow conventions) handle all of your peripheral needs.
Spring Roo is a very-fast-to-work-with framework, but it might get hard to maintain and extend later on.
These two are full web frameworks, that is, they handle database, MVC (presentation layer), configuration setting, etc... (I'll explain shortly). And could even ease your deployment process.
If you're going to go through any other route (using several frameworks together), you are probably not going to finish what you are doing in five months.
To understand why, and to clear some things you wrote in your question, you need to understand that modern web development (and enterprise development as a whole) is comprised of several different technologies:
Presentation: the term web frameworks has been more or less taken to mean frameworks that deal with this side of web development, i.e., how to create a web page (an HTML page). Most of the frameworks offer an MVC like approach (which you can read about elsewhere), and this is what most of the frameworks/technologies you gave sit in—JSP and Struts (which uses JSP) are examples of web frameworks. Servlets is a lower-level API that standardizes how to answer HTTP requests (which JSP and Struts sit on top of).
Persistence: being able to show a webpage doesn't mean squat these days if you can't save data to a database, and that is what the persistence frameworks do (they ease the way you can save data to the database). Hibernate is a persistence framework.
For Java there are also dependency injection (DI), which is what Spring DI is. It's tough to explain DI to people not familiar with the troubles of Java, so I won't try to explain it, but it's a very important part of modern Java development.
apart from these core technologies, there are also many items that you'll need to learn to actually deploy the application (unless your using services like Heroku or Google App Engine, which should simplify things), and troubleshoot it later (understanding how concurrency and HTTP works).
To address the other technologies you brought up:
I've never really touched Seam, so I'm not sure, but it looks like a collection of other frameworks (mainly EJB 3, which itself is a collection of APIs, and JSF).
Spring denotes a popular open source group (the SpringSource group) that provides various technologies, but most likely when you hear about it they refer to two things Spring's dependency injection (DI) and Spring's MVC (which is a web framework).
Java EE is merely a collection of high level APIs which other technologies implement (Hibernate implements JPA which is part of Java EE for instance).