Sunday, 7 February 2016

Best Java training Syllabus

Java & J2EE Syllabus for Fresher’s & Professionals:

Java & J2EE Syllabus for Fresher’s:

For Front End Design:

Ø HTML
Html (Hyper Text Markup Language) mainly use for design a client side web pages, this is a static page it means you can only view Html page not give request and not get response from server using html page. Using Html pages browser get user information through form (This is an Html element). Html provides so mony elements (like <p>, <img>, <h1>) to design a web page.
Ø Jscript
JavaScript is a object-based scripting language. It is light weighted. Using HTML we can only design a web page but you can not run any logic on web browser like addition of two numbers, check any condition, looping statements (for, while), decision making statement (if-else) at client side. All these are not possible using HTML So for perform all these task at client side you need to use JavaScript.
Ø CSS(optional)
Cascading Style Sheets (CSS) is a rule based language that applies styling to HTML elements. We write CSS rules in elements (<p>, <img>), and modify properties of those elements such as color, background color, width, border thickness, font size, etc.

For Middle End
Ø Core Java
Java is a simple and yet powerful object oriented programming language, Platform, robust and it is in many respects similar to C++. Java originated at Sun Microsystems, Inc. in 1991. It was conceived by James Gosling, Patrick Naughton, Chris Warth, Ed Frank, and Mike Sheridan at Sun Microsystems, Inc. It was developed to provide a platform-independent programming language.Using java language we can develop standalone app and web based applications.
Ø JDBC
Java JDBC is a java API to connect and execute query with the database. JDBC API uses jdbc drivers to connect with the database.
Advanced java (J2EE)

Ø Servlets
Servlet technology is used to create web application (resides at server side and generates dynamic web page). Servlet is a java program, exist and executes in j2ee servers, used to received the http protocol request, process it and send response to client.
Using Servlet, we can collect input from users through web page forms, present records or another source, and create web pages dynamically.

Ø JSP
JSP technology is used to create dynamic web application same like Servlet technology. It is another web technology given by Sun MicroSystem for the development of dynamic web pages on the client browser. It provides a tag based approach to develop java web components.
Ø EJB
EJB (Enterprise Java Bean) is used to develop scalable, robust and secured enterprise applications in java.
Unlike RMI, middleware services such as security, transaction management etc. are provided by EJB Container to all EJB applications.
The current version of EJB is EJB 3.2. The development of EJB 3 is faster than EJB 2 because of simplicity and annotations such as @EJB, @Stateless, @Stateful, @ModelDriven, @PreDestroy, @PostConstruct etc.

Ø XML
Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format which is both human-readable and machine-readable.
Frame Work (Any one):
Ø Spring
Spring is a lightweight framework. It can be thought of as a framework of frameworks because it provides support to various frameworks such as Struts, Hibernate, Tapestry, EJB, JSF etc. The framework, in broader sense, can be defined as a structure where we find solution of the various technical problems.

Ø Hibernet
Hibernate framework simplifies the development of java application to interact with the database. Hibernate is an open source, lightweight, ORM (Object Relational Mapping) tool.
Ø Struts
The Struts 2 framework is used to develop MVC (Model View Controller) based web applications. Struts 2 is the combination of webwork framework of opensymphony and struts 1.

Back End Design (Data Base-Any one):

SQL
·       SQL (Structured Query Language) is used to perform operations on the records stored in database such as updating records, deleting records, creating and modifying tables, views etc.
·       SQL is just a query language, it is not a database. To perform SQL queries, you need to install any database for example Oracle, MySQL, MongoDB, PostGre SQL, SQL Server, DB2 etc.

Ø Mysql
MySQL is a Relational Database that stores Data in the form of tables and create relations among the tables in the forms of Indexes to retrieve related information easily.MySQL provides you the command line Interface as well as GUI (Graphical User Interface).
Ø SQL Server
Same as MySql but its Microsoft  technology developed one.
Ø Oracle
PL/SQL stand for (Procedural Language / Structure Query Language). It is extension of SQL. It was developed by Oracle Corporation in the early 90's to increase the functionality of SQL.
PL/SQL is a block structured language that can have multiple blocks in it.
Ø DB
A database(DB) is a collection of information that is organized so that it can easily be accessed, managed, and updated. In one view, databases can be classified according to types of content: bibliographic, full-text, numeric, and images



Java & J2EE Syllabus for Java Developers:

Ø OCJP/SCJP Certificate Guidance

Ø JSON

Ø MAVEN

Ø JMeter
Ø JUnit
Ø JQuery
Ø AJAX
Ø MVC_Design Pattern
Ø Java Mail
Ø Web Services



Difference between Java and C/C++?

Difference between Java and C/C++?

Very very important in interview hall

Difference between Java and C
Java is a platform independent language. But c is not a platform independent is depends on operating system machine.
Java uses both compiler and interpreted, but c is uses compiler only.
Java is object oriented programming language but c language is procedural as well as structured programming language.
In c memory management is manually using malloc( ) and free( ), but java provides a garbage collector to manage memory.
Goto statement is used in c but it not used in java.
In c variable declared in a program beginning of the block and java variable declared anywhere in the program .
Java does not support pointer but c support pointer.
C language is used preprocessor (e.g # define) but java not support prepocessor.
Java does not support operator overloading but c support operator overloading.
java does not support global variable but c is support global variable.
String is an array of Characters into C .But in case of Java String type is as Object.
Difference between Java and C++
Java is a platform independent language language. But c++ is not a platform independent language it depend on operating system machine.
Java does not support multiple inheritance but, c++ support multiple inheritance.
java does not support pointer, union, structure, templates, operator overloading but, c++ is support pointer, union, structure, templates, operator overloading and pointer arithmetic.
java uses compiler and interpreter both but, c++ is use compiler only.
At compilation time java program first java source code is compile then generate byte code means (.class ) and after interpreted convert the machine code before execution. But c++ run and compile uses compiler which convert source code into machine language.
Java has support method overloading but not support operator overloading. C++ support both method overloading and operator overloading.
Java has primitive data type like boolean which are not available in c++.
java has support documentation comment( /**............*/ ) , but c++ is not support documentation comment.
Java does not support scope resolution operator smile emoticon smile emoticon, But c++ is support resolution operator.
Java does not support goto (but goto is reversed word).
C++ is more nearer to hardware then java.
Java does not support unsigned integer.
Java does not support global variable.
Thread support built in java but not c++.
Java does not support header file just like c++. it use import to add the class and interrface.
Exception and Auto Garbage Collector handling in Java is different because there are no destructors into Java.

Step By Step Path to Becoming a Great Software Developer

Step By Step Path to Becoming a Great Software Developer


I get quite a few emails that basically say “how do I become a good / great software developer?”
These kinds of emails generally tick me off, because I feel like when you ask this kind of question, you are looking for some magical potion you can take that will suddenly make you into a super developer.
I suspect that very few people who email me asking this question really want to know how to become a great software developer, but are instead looking for a quick fix or an easy answer.

On the other hand, I think there are some genuinely sincere developers that just don’t even know how to formulate the right questions they need to ask to get to their desired future. I think those developers–especially the ones starting out–are looking for a step-by-step guide to becoming a great developer.
I thought I would make an attempt, from my experience and the best of my knowledge, to offer up that step-by-step guide.
Now, of course, I realize that there is no magical formula and that there are multiple paths to success, but I think what follows is a reasonable outline of steps someone starting out could take to reach a pretty high level of proficiency and be generally regarded as a good–perhaps even great–developer

Step 1: Pick one language, learn the basics

Before we can run, we have to learn to walk. You walk by learning how to program in a single programming language. You don’t learn to walk by trying to learn 50 million things all at once and spreading yourself way too thin.
Too many beginning programmers try and jump into everything all at once and don’t have the patience to learn a single programming language before moving forward. They think that they have to know all the hot new technologies in order to get a programming job. While it is true that you need to know more than just the basics of a single programming language, you have to start here, so you might as well focus.
Pick a single programming language that you think you would be likely to base your career around. The programming language itself doesn’t matter all that much, since you should be thinking for the long term here. What I mean is you shouldn’t try and learn an “easy” programming language to start. Just learn whatever language you are interested in and could see yourself programming in for the next few years. You want to pick something that will have some lasting value.
Once you’ve picked the programming language you are going to try and learn, try and find some books or tutorials that isolate that programming language. What I mean by this is that you don’t want to find learning materials that will teach you too much all at once. You want to find beginner materials that focus on just the language, not a full technology stack.
As you read through the material or go through the tutorial you have picked out, make sure you actually write code. Do exercises if you can. Try out what you learned. Try to put things together and use every concept you learn about. Yes, this is a pain. Yes, it is easier to read a book cover-to-cover, but if you really want to learn you need to do.
When you are writing code, try to make sure you understand what every line of code you write does. The same goes for any code you read. If you are exposed to code, slow down and make sure you understand it. Whatever you don’t understand, look up. Take the time to do this and you will not feel lost and confused all the time.
Finally, expect to go through a book or tutorial three times before it clicks. You will not get “programming” on the first try–no one ever does. You need repeated exposure before you start to finally get it and can understand what is going on. Until then you will feel pretty lost, that is ok, it is part of the process. Just accept it and forge ahead.

Step 2: Build something small

Now that you have a basic understanding of a single programming language, it’s time to put that understanding to work and find out where your gaps are. The best way to do this is to try and build something.
Don’t get too ambitious at this point–but also don’t be too timid. Pick an idea for an application that is simple enough that you can do it with some effort, but nothing that will take months to complete. Try to confine it to just the programming language as much as possible. Don’t try to do something full stack (meaning, using all the technologies from user interfaces all the way to databases)–although you’ll probably need to utilize some kind of existing framework or APIs.
For your first real project you might want to consider copying something simple that already exists. Look for a simple application, like a To-Do list app and straight out try to copy it. Don’t let your design skills stand in the way of learning to code.
I’d recommend creating a mobile application of some kind, since most mobile applications are small and pretty simple. Plus, learning mobile development skills is very useful as more and more companies are starting to need mobile applications. Today, you can build a mobile application in just about any language. There are many solutions that let you build an app for the different mobile OSes using a wide variety of programming languages.
You could also build a small web application, but just try to not get too deep into a complex web development stack. I generally recommend starting with a mobile app, because web development has a higher cost to entry. To develop a web application you’ll need to at least know some HTML, probably some back-end framework and JavaScript.
Regardless of what you choose to build, you are probably going to have to learn a little bit about some framework–this is good, just don’t get too bogged down into the details. For example, you can write a pretty simple Android application without having to really know a lot about all of the Android APIs and how Android works, just by following some simple tutorials. Just don’t waste too much time trying to learn everything about a framework. Learn what you need to know to get your project done. You can learn the details later.
Oh, and this is supposed to be difficult. That is how you learn. You struggle to figure out how to do something, then you find the answer. Don’t skip this step. You’ll never reach a point as a software developer where you don’t have to learn things on the spot and figure things out as you go along. This is good training for your future.


Step 3: Learn a framework

Now it’s time to actually focus on a framework. By now you should have a decent grasp of at least one programming language and have some experience working with a framework for mobile or web applications.
Pick a single framework to learn that will allow you to be productive in some environment. What kind of framework you choose to learn will be based on what kind of developer you want to become. If you want to be a web developer, you’ll want to learn a web development framework for whatever programming language you are programming in. If you want to become a mobile developer, you’ll need to learn a mobile os and the framework that goes with it.
Try to go deep with your knowledge of the framework. This will take time, but invest the time to learn whatever framework you are using well. Don’t try to learn multiple frameworks right now–it will only split your focus. Think about learning the skills you need for a very specific job that you will get that will use that framework and the programming language you are learning. You can always expand your skills later.


Step 4: Learn a database technology

Most software developers will need to know some database technology as most series applications have a back-end database. So, make sure you do not neglect investing in this area.
You will probably see the biggest benefit if you learn SQL–even if you plan on working with NoSQL database like MongoDB or Raven, learning SQL will give you a better base to work from. There are many more jobs out there that require knowledge of SQL than NoSQL.
Don’t worry so much about the flavor of SQL. The different SQL technologies are similar enough that you shouldn’t have a problem switching between them if you know the basics of one SQL technology. Just make sure you learn the basics about tables, queries, and other common database operations.
I’d recommend getting a good book on the SQL technology of your choice and creating a few small sample projects, so you can practice what you are learning–always practice what you are learning.
You have sufficient knowledge of SQL when you can:
·         Create tables
·         Perform basics queries
·         Join tables together to get data
·         Understand the basics of how indexes work
·         Insert, update and delete data
In addition, you will want to learn some kind of object relational mapping technology (ORM). Which one you learn will depend on what technology stack you are working with. Look for ORM technologies that fit the framework you have learned. There might be a few options, so you best bet is to try to pick the most popular one.

Step 5: Get a job supporting an existing system

Ok, now you have enough skills and knowledge to get a basic job as a software developer. If you could show me that you understand the basics of a programming language, can work with a framework, understand databases and have built your own application, I would certainly want to hire you–as would many employers.
The key here is not too aim to high and to be very specific. Don’t try and get your dream job right now–you aren’t qualified. Instead, try and get a job maintaining an existing code base that is built using the programming language and framework you have been learning.
You might not be able to find an exact match, but the more specific you can be the better. Try to apply for jobs that are exactly matched to the technologies you have been learning.
Even without much experience, if you match the skill-set exactly and you are willing to be a maintenance programmer, you should be able to find a job.
Yes, this kind of job might be a bit boring. It’s not nearly as exciting as creating something new, but the purpose of this job is not to have fun or to make money, it is to learn and gain experience.
Working on an existing application, with a team of developers, will help you to expand your skills and see how large software systems are structured. You might be fixing bugs and adding small features, but you’ll be learning and putting your skills into action.
Pour your heart into this job. Learn everything you can. Do the best work possible. Don’t think about money, raises and playing political games–all that comes later–for now, just focus on getting as much meaningful productive work done as possible and expanding your skills.


Step 6: Learn structural best practices

Now it’s time to start becoming better at writing code. Don’t worry too much about design at this point. You need to learn how to write good clean code that is easy to understand and maintain. In order to do this, you’ll need to read a lot and see many examples of good code.
Beef up your library with the following books:
·         Code Complete
·         Clean Code
·         Refactoring
·         Programming Pearls – (do the exercises)
Language specific structural books like:
·         JavaScript: The Good Parts
·         Effective Java
·         Effective C#
At this point you really want to focus your learning on the structural process of writing good code and working with existing systems. You should strive to be able to easily implement an algorithm in your programming language of choice and to do it in a way that is easy to read and understand.

Step 7: Learn a second language

At this point you will likely grow the most by learning a second programming language really well. You will no doubt, at this point, have been exposed to more than one programming language, but now you will want to focus on a new language–ideally one that is significantly different than the one you know.
This might seem like an odd thing to do, but let me explain why this is so important. When you know only one programming language very well, it is difficult to understand what concepts in software development are unique to your programming language and which ones transcend a particular language or technology. If you spend time in a new language and programming environment, you’ll begin to see things in a new way. You’ll start to learn practicality rather than convention.
As a new programmer, you are very likely to do things in a particular way without knowing why you are doing them that way. Once you have a second language and technology stack under your belt, you’ll start to see more of the why. Trust me, you’ll grow if you do this. Especially if you pick a language you hate.
Make sure you build something with this new language. Doesn’t have to be anything large, but something of enough complexity to force you to scratch your head and perhaps bang it against the wall–gently.

Step 8: Build something substantial

Allright, now comes the true test to prove your software development abilities. Can you actually build something substantial on your own?
If you are going to move on and have the confidence to get a job building, and perhaps even designing something for an employer, you need to know you can do it. There is no better way to know it than to do it.
Pick a project that will use the full stack of your skills. Make sure you incorporate database, framework and everything else you need to build a complete application. This project should be something that will take you more than a week and require some serious thinking and design. Try to make it something you can charge money for so that you take it seriously and have some incentive to keep working on it.
Just make sure you don’t drag it out. You still don’t want to get too ambitious here. Pick a project that will challenge you, but not one that will never be completed. This is a major turning point in your career. If you have the follow-through to finish this project, you’ll go far, if you don’t… well, I can’t make any promises.


Step 9: Get a job creating a new system

Ok, now it’s time to go job hunting again. By this point, you should have pretty much maxed out the benefit you can get from your current job–especially if it still involves only doing maintenance.
It’s time to look for a job that will challenge you–but not too much. You still have a lot to learn, so you don’t want to get in too far over your head. Ideally, you want to find a job where you’ll get the opportunity to work on a team building something new.
You might not be the architect of the application, but being involved in the creation of an application will help you expand your skills and challenge you in different ways than just maintaining an existing code base.
You should already have some confidence with creating a new system, since you’ll have just finished creating a substantial system yourself, so you can walk into interviews without being too nervous and with the belief you can do the job. This confidence will make it much more likely that you’ll get whatever job you apply for.
Make sure you make your job search focused again. Highlight a specific set of skills that you have acquired. Don’t try to impress everyone with a long list of irrelevant skills. Focus on the most important skills and look for jobs that exactly match them–or at least match them as closely as possible.

Step 10: Learn design best practices

Now it’s time to go from junior developer to senior developer. Junior developers maintain systems, senior developers build and design them. (This is a generalization, obviously. Some senior developers maintain systems.)
You should be ready to build systems by now, but now you need to learn how to design them.
You should focus your studies on design best practices and some advanced topics like:
·         Design patterns
·         Inversion of Control (IOC)
·         Test Driven Development (TDD)
·         Behavior Driven Development (BDD)
·         Software development methodologies like: Agile, SCRUM, etc
·         Message buses and integration patterns
This list could go on for quite some time–you’ll never be done learning and improving your skills in these areas. Just make sure you start with the most important things first–which will be highly dependent on what interests you and where you would like to take your career.
Your goal here is to be able to not just build a system that someone else has designed, but to form your own opinions about how software should be designed and what kinds of architectures make sense for what kinds of problems.

Step 11: Keep going

At this point you’ve made it–well, you’ll never really “make it,” but you should be a pretty good software developer–maybe even “great.” Just don’t let it go to your head, you’ll always have something to learn.
How long did it take you to get here? I have no idea. It was probably at least a few years, but it might have been 10 or more–it just depends on how dedicated you were and what opportunities presented themselves to you.
A good shortcut is to try and always surround yourself with developers better than you are.