Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I am about to learn a subject as an elective which will teach me AWT, Swing and little bit knowledge regarding threads (in Java). As on Stackover Overflow mostly there are working professionals, I would like to ask:
Are there any need to learn these basics of Java in industry?
Are these technologies are already outdated?
Which one will be wiser to choose: Advance concepts of Java or ASP.NET?
IMO, In the mainstream, desktop GUIs will be replaced with new generation rich web frameworks like GWT or Wicket.
1) Knowing Swing will give you big advangate when learning e.g. GWT.
IMO (unlike most), Swing is mostly well designed OOP model for GUI.
The concepts will live for an era.
2) See 1). Technology will become non-mainstream, but still live in desktop apps and old enterprise rich clients. But the concepts will prevail.
3) Not a real question, you'll get pyloried :) But I'd go for Java any time without any second guess.
I'd suggest you to choose java. Keeping the answer close to your questions.
1) Yes, Basics of java are important irrespective of whether they are used in industry or not. For example: You may learn to write code for swings but in the industry you might use some drag and drop mechanism for the same but even so, one would consider you as a software developer only if you are strong in basics.
2) No, java technologies are not outdated, not yet at least. Many software industries rely on java as a platform to develop products because of various reasons. Its good performance, availability of java developers, et al.
3) Advanced concepts of java IMO is better compared to asp.net for a learner. Asp.net will restrict you to Microsoft's platform and later on you might be bound to streamline your career learning Microsoft's technologies like C# etc. J2EE, JSP and the rest of the advanced java concepts will give you a strong foothold in web application development. Having learnt Advanced java thoroughly it is easier to switch to Asp.net but not necessarily vice versa.
Having learnt java thoroughly, you will get acquainted with various facets of OOP, Web application development and many other basics of programming. Shifting onto any other language/platform will be easy, once you are thorough with programming concepts in java.
Just for avoiding trolls.
In order to anwser the third point.
Advance Java (using Spring, Struts and stuffs) or using ASP.Net (MVC3) is quite similar in several ways. So both is ok, the choice should be driven by the fact your company is using more .net or java.
I would strongly advise that you learn about threads. That's essential basic knowledge. I would expect any Java professional to be proficient in the basics of multi-threaded programming, and the concepts behind it.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
As I plan to switch my career to a 100% web services development company(using open source Java technologies), I need to build a thorough knowledge in the foundation concepts and then related technologies. But I'm pretty confused by the thousands of jargon and technologies. What study/development plan would you suggest for a novice? A list of up-to-date books,articles,tutorials would be greatly appreciated.
Assuming you want "Java web services" (question is tagged with java) and assuming you already know Java and understand basic OO concepts like inheritance/polymorphism and the need for abstract classes/interfaces, start with a book preferably this.
There are many code examples. Once you have worked the basics out, check out security, performance, RESTful web services (don't get nervous about terminologies, they are mostly fancy terms for most "common-sense" stuff). Keep in mind, if you had "common sense" most of these should make sense (once you wiki or google them up).
Finally if you are someone like me who only reads if she has to clear an exam then take up the Sun certification for Web services. I know many experts scoff at this idea saying "it is not useful", I think if you are a beginner and if you clear this you will atleast know that have done something. (This is not to be confused with "Certification makes a better programmer" which can be debatable)
You will have a lot of learning to do. First of all, if you want to do ANYTHING in the Java world, you need to master Java and the standard runtime library.
A good resource for learning this is the Java Tutorial. http://java.sun.com/docs/books/tutorial/getStarted/index.html
Take particular notice of anything related to sockets, as these are essential to web services.
Then you can start considering how to do servlets, web applications and web applications providing web services.
Learn programming in machine code
Learn programming in assembler
Same in non-structured language like Fortran
Same in structured language like C, Pascal
Same in Object Oriented language like C++, Java, Delphi
At this spot one might not need this plan anymore because webservices may become obsolete, but if to continue, goto step 7
Learn abstract classes
Learn pure abstract classes
Learn interfaces
Now it is possible to start understanding cross-language interactions like JNI, COM
Briefly learn networks, client/server, RPC, protocols, remoting
Learn in depth one of remoting technologies like Corba, DCOM or XML over TCP
Learn in depth http, XML, XSD, WSDL
Implement simple client of Web Server
Having overall combined knowledge one can consider self able to see some value in WebServices
Implement few SOAP clients, consuming existing web services. Become comfortable being a WS user
Start learning service side of WebServices starting with unsecured WebService
Learn compliance verification tools
Learn WebServices
Done
I am not sure if you are an IT guy or not. I assume you are.
Here are my tips to start-off learning web services:
- learn HTML, XML
- learn OOP language like Java (core Java should be fine)
- learn SOAP
- learn/install tomcat, AXIS2
If you are pretty new to IT field, i would recommend you to reconsider your decision to learn web services, since it will take at least an year for you to be there. Take baby steps and try to learn OOP language first. Then decide what to do next. All the best!!
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 months ago.
Improve this question
I just graduated last year and I landed a job in the CRM space, specifically with Salesforce.com and its respective platform. My problem is that there are 2 languages used to do things on this platform one is relatively similar to java and is OO the other is a web-development language similar to js, but not quite. I come from a java background.
I have had limited practice with web development in the past and was always interested in it but found it difficult.
Now that I have been thrust into this world I'm finding it hard to complete tasks simply because things do not function the way I am used to in the OO world. I'd write code that would compile, test and get aggravated when things simply do not function as expected!
What do you guys suggest would be best for me to read and comprehend in order to transition my OO thinking into web-development thinking.... I'm thinking I should learn things such as 'states, MVC etc etc.' but just don't know where to begin...
Thanks for all the help!
If you mean Object Oriented with the shortcut OO I have to disagree, because most web development languages are in fact object oriented (and you really shouldn't switch from a object oriented to a procedural server sided programming language). So what you of course need is understanding of your server sided language, be it PHP, Java, Ruby or whatever and that all of them in the end just generate some form of String output (which usually HTML). So you should be aware of all the technologies and how they interact (e.g. HTML, CSS, JavaScript/AJAX, your server sided language framework and so on) and have a understanding of how the transport protocol (meaning mainly HTTP) works and what the disadvantages/advantages are.
If you already did more OO development you should at least have heard about MVC which is (with some adaptions to HTTP being a stateless protocol) probably one of the more important patterns to transfer into and use in the web dev world.
It sounds like you are having trouble getting started with Apex and Visualforce, the two technologies used for development on the Force.com platform.
I'd recommend reading through the developer.force.com site. In particular check out the tutorials.
As far as object oriented development with Apex goes, start by reading Object Oriented Apex - Practical Usage.
It might also be worthwhile to cruise through the message boards and see what questions other people are asking. The community is pretty active. If you have specific questions, you can ask them or stackoverflow.
In my experience, working on web projects instantly reduces my productivity by 50%. It takes me twice as long to get something working in a web project compared with a compiled executable program.
You're working in mutliple languages that interact in ways that you need to control in a very specific way. Your mindset changes depending on if you're writing code for the client-side, or server-side. (Some of this goes away if you're doing Google's Web Toolkit coding).
I won't even go into the added difficulties of debugging web based products when compared with debugging a typical executable.
Most of the langauges do support some form of Object Orientation, and when they don't, typically developers will separate functionality into different files based on Object Oriented techniques. I think you'll find that knowledge will still apply.
Web development fully embraces OO if used with frameworks like .NET and JSF.
You need to start thinking in terms of web application logic and behavior. The OO concepts are there to help you and be your tools.
If you mean client side languages like Javascript/action scripts. Try Dojo framework for javascript development, it has a great model using an OO approach.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
What is best language to learn next to Java?
Criteria for this secondary language are:
High potential of being the "next big thing". e.g. If the market for Java open positions hypothetically dies/dwindles, what is the next programming language that will have a bigger market for open positions? Another way to frame this question is: If I own a small company that implements solutions in Java, what is the other language that I should use?
Can produce web applications.
Can produce desktop applications.
Easy and fun to learn.
Wide range of available libraries and frameworks (free or open source) that enhance and speed up your solutions.
Python almost meets all of them, but I don't know about being "the next big thing", but hey, Google uses it, and I think its popularity is raising.
It's a scripting language, btw.
I use it for web applications (using django), and you can definitely create desktop applications with it (although I haven't done that myself).
It is easy and fun! (although this is quite subjective, but it's tons easier and "funner" than Java)
For employability: Any of the .Net languages, probably C#. Then you're well set for most potential customers.
For stretching yourself: something functional (F# to cover .Net too?), or something Lisp, or Smalltalk - was once the next big thing but it probably never will be again, but still a language that changed signficantly my approach to programming in other languages.
If you are expert in java, you will probably really enjoy groovy.
It is backwards compatible with java and has a lot of the nice features of ruby and similar dynamic languages. It also has what is shaping up to be a nice rails-a-like in grails, and a good object-relational mapping framework in GORM.
What is really nice about it is you can mix and match groovy classes and java classes. So if you find yourself forgetting the groovy syntax, you can just drop into Java. And of course you can get at any Java library from it. At the same time you can benefit from groovy's really concise idioms for things like Beans properties.
(By the way it meets all your criteria listed above, too)
Learn a language that will probably not be the Next Big Thing™. Learning a new language usually means learning new concepts (unless you learn one that's very similar to another one you already know).
Learning new concepts has great advantages, no matter which language you program in, so it's a pretty good thing to do.
If you limit yourself to a language that's going to be the Next Big Thing™, then chances are that you'll find a lot of familiar concepts and only relatively few new ones (the IT world is conservative like that).
Learn something that looks interesting to you. Not only will you be able to learn faster, if it's interesting, but you'll also have more fun doing so!
How about Scala or JavaScript? Functional paradigms will stretch your thinking further and will be of benefit whether they are "the next big thing", or not.
Go for a different paradigm : functionnal, lisp, haskell, ocaml, erlang, scala, etc.
If you don't have any religious issues with Microsoft, I would argue for C#.
The only downside I can see is that it's not cross-platform. Otherwise it fits your requirements as far as I can see
Your criteria fairly closely matches Python and Ruby, they both have a growing market base in Web development, and are fully capable of producing desktop applications as well. Whilst they are fairly closely matched, Python has a slightly larger library of re-usable code modules, whilst Ruby's strength leans more to it's well-established frameworks.
As a side-note, You should ensure that you don't stop at 2 languages. Start learning a second one, then pick up a third and even fourth as you progress. Learning new programming languages becomes a more trivial task as the general learning curve evens out.
I must second Gilles here; to learn a different paradigm is very rewarding, and functional programming is [not unlikely to be] the Next Thing.
Erlang is great both in flexibility, ease of use (once you grasp the basic ideas) and - the best of all - it it very well suited for the high parallelism of future and current hardware. It also covers all your five criteria, though it might be more of a "server" language than a "desktop" language.
If you are interested, I suggest the book Programming Erlang by Joe Armstrong.
Personally, I'd go with Ruby and focus on running your Ruby scripts under JRuby. this way you get the expressiveness of Ruby with the JVM running your code. I've seen Rails and Merb running under Glassfish. Might seem odd, but you get all the nice instrumentation of Glassfish with your Ruby code. Things like JMX, RMI, etc. work well with JRuby.
Squeak by Example
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
Should I use LAMP, .Net, or any other platform? I have access to resources with LAMP, .Net, ROR and Java experience. Thanks.
Sorry for being vague. Could you give me a few pluses and minuses of each like Paul? Thanks for your time and effort.
If you're planning to host the system, then you are best to work in a language that you are comfortable with and can hire people to help you. That means you want something reasonably popular, but also oriented towards the type of functionality you are implementing. Presumably you are writing some form of web application.
Personally, my favorite web app language was Perl, but it took a huge amount of self-discipline to keep from making it a mess. It's probably not great for big teams, and it's hard to hire people with experience.
PHP is great for pounding out web apps, and it has a big following. Unless I haven't been keeping up on it LAMP, .Net, ROR and PHP are all bounded by web 1.0 technologies, which means augmenting them with a JavaScript library like Dojo if you want to use AJAX (which is all the rage these days).
If the software is enterprise, then Java or C# are more sellable, but since you're running it yourself that doesn't matter. Personally I'd stay far away from J2EE, it's just too much complexity for too little functionality.
My latest combo is Java, GWT and hibernate, but I find they are very difficult technologies to master. Good if you have the time for long term development, but not so great if you're in a hurry.
So, if you're in a rush, prototyping in LAMP, with a very simple 1.0 front-end is probably best, then later once you've crystallized the concept, redoing the system in some stronger technology will help you get to the next level of performance.
Paul.
If its a professional project then use whatever you have the best resources for, if you don't know then ask your coworkers what they would be most comfortable with. If things really are equal (and I doubt they are) then use each of the platforms to write a random platform selector, and use that to make your choice.
Conversly if its a personal project and you are looking for something new, then use the thing that you know least about.
Waaaay too subjective/argumentative.
They all have gains and losses and are all adept at SAAS type architectures these days. Use whichever you're most or least comfortable with depending on your goals.
Try to see which platform has purpose built solutions. I know in .NET there is Apprenda's SaaSGrid and in Java, BEA was working on something called Genesis, but I think it was cancelled when Oracle bought them.
My answer is the same as Paul's.
Know who your users are and if they have software requirements, such as Microsoft licenses etc. It's much easier to bind Microsoft applications with .net than any other language.
Know your budget if you have one. PHP will be the cheapest and fastest to build a web app in. All you need is apache, roughly 10 lines of site configuration, and about 50 lines of code for a SAAS app.
Is it a once-off develop and forget? Most applications won't be, so you'll need to develop it in a language that's accessible and well supported. No point developing in Ruby or Perl if you need high availability, accessibility and support.
Keep in mind that you can develop enterprise-level applications in PHP, Java and .NET. One of the reasons why people develop in .NET and Java for enterprise level applications is for the available support, stricter languages, typically better developers etc. It's a myth that PHP is no good for enterprise - each platform is only as strong as its weakest component.
Are you using an Oracle or Microsoft database? While PHP can connect to those systems, they require additional drivers to do so.
First of all, figure out what you're trying to build. Prototype it in a language that you won't develop the final solution in (unless that language is your strongest and most competent language) so that you simply can't continue using the prototype as the final solution. Transfer the business logic, framework scaffolding and library ideas to your chosen language.
I've developed SaaS apps in PHP before, and from my experience there's hundreds of ways to skin the same cat so to speak
Pros:
Cheap development
Rapid development
Low server costs
Low initial maintenance costs
Cons:
Semi-competent developers who are most likely unfamiliar with OOP & SAAS concepts (this is almost always a given)
Expensive maintenance down the track, especially point 1
Performance overhead without effective caching strategies
Every developer who touches the application will want to develop it into their own system
Not a strongly typed language, so type hints are very important as well as constantly validating input for type and correctness (word?)
Hope that helps...
You could use a free web RAD called 4WS.Platform:
www.4wsplatform.org
which is free.
You could deploy it in Google App Engine and use it to create web applications on the cloud, which are a Saas solution...
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
At my current job I've been working on making web apps with Java, Tapestry, Hibernate, MSSQL, and Tomcat.
I've got an idea for a little web game I'd like to write. I'd like to know what the SO community would use for something like this.
Should I stick to what I know? I was thinking it would be very beneficial for me to learn different languages and frameworks. Any suggestions?
If its a personal project then take this as an opportunity to learn something new.
Spring Framework using Spring MVC 3.0
I recommend learning something new because even if your idea is a failure, at least you learned some new technology out of it.
I can suggest Grails as it is a modern and easy to use RAD Web-Framework, has a small learning curve and is proven to be scaleable.
It builds upon Spring MVC, Hibernate and other sophisticated frameworks and merges them with the dynamic nature of Groovy (dynamic language for the JVM) into a full-stack webframework. It follows modern principles like CoC (Convention over Configuration) and DRY (Don't repeat yourself). You can deploy the applications straightforward as .war file in tomcat or any other servlet container or applications server.
My recommendation would be to see what you could do with a combination of Google App Engine, Django, and JavaFX.
In doing so, you'd learn some new technologies (App Engine) and languages (Python for Django, JavaFX) while taking advantage of what you already know about web apps and Java.
I'd pick Haxe.
Haxe (pronounced as hex) is an open source programming language
While most other languages are bound to their own platform (Java to the JVM, C# to .Net, ActionScript to the Flash Player), Haxe is a multiplatform language.
It means that you can use Haxe to target the following platforms : Javascript, Flash, NekoVM, PHP, C++, C# and Java
If your thinking about an online game like a RPG or card game I might be selfish and suggest you have a look at Project Darkstar and let us know how you got on. I've been trying to get started with it and cannot get it up running in my environment.
PHP and MySQL is an easy place to start for web apps. Your ISP will support it and there are tons of tutorials on the web.
Once you have got the hang of it, take a look at MVC architecture. It's a way of structuring web apps.
Personally I'd then recommend looking at CodeIgniter.
However a game is a different matter, maybe try Flash?
If you want to improve your skills push what you already know. If you want to learn new languages and ways of doing things, then look at alternative technologies and stacks.
It all depends on what your goals are...