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.
Related
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.
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
quick question, Im starting to develop the backend for a Flash game, and Im very used to AS3 sintax, and I know that Java has a very similar sintaxis, in the other hand I heard that it could be a little more complex to do than with php.
So, Im kind of new to php, and I could get used very quickly to Java, whats my best option?
(I need to do things like: user login, highscore table, etc)
It depends on the complexity that you have in the server side. Usually a Flash game do not need a complex business logic in the server side, I would use PHP in this case, Java otherwise.
If you are going to host this application, Java hosts are way more expensive than PHP ones also.
From what I understand here, Actionscript is more like JavaScript, not Java.
PHP and Java are both very suitable for a back-end to your game. I prefer PHP, but I am biased.
However, you are looking to stay within familiar territory, you should look at using Node.js, which is basically server-side JavaScript.
Yeah, I jumped from java to AS3 without any problem:D The one big advantage of php is that almost every server has it and with java is harder to find some reliable hostings. PHP could be also easier and little faster to develop some simple backend.
In terms of a similar programming experience one will find more comfort in Java than PHP. The main difference is that PHP is dynamic and the other two are compiled. The consequence is that debugging of Java and AS3 happens when it is being compiled, and in PHP when it runs. You also do not deal with predefining types in PHP for that matter and can totally ignore Object Orientation in it. Java and AS3 are more strict and require all these things. So in terms of choosing a language, Java will be more familiar (and easier) to pick up for a AS3 developer.
In terms of support for web based hosting and development, you'll find PHP more suitable since a majority of cheap hosting companies will have those installed by default. In addition, PHP was developed especially with the web in mind where precompiled web applications are not the best option in most cases. PHP in this regard deploys extremely easy (you just move the files onto your server). In terms of support for webdevelopment and specific examples for web based problems in combination with the support for PHP and deployment, you'll be better off with PHP.
Both have integration libraries, BlazeDS for Java, and AMFPHP for PHP, I haven't tried out the PHP integration I know from experience that Blaze is INCREDIBLY faster than XML or JSON for moving data back and forth. Assuming they're fairly equal then the question is where is it easier to find hosting, and which is better for you to develop and maintain.
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 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 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
I was chatting to someone the other day who suggested that Rails and PHP are the most suitable platforms for web applications, and to avoid Java. My background is mainly Java, and I know that it is considered by some to be too verbose and "heavyweight", but is used occasionally (e.g. by LinkedIn).
So I'm wondering whether anyone has had success using Java for a recent web application that has gone live, either using the language itself (e.g. with Stripes/Spring + Hibernate), or the runtime with a dymamic language (such as JRuby, Groovy, Jython)? If so, please share what worked and what you would do differently.
Some background (added later):
Tim O'Reilly coined the phrased "Web 2.0" and here is his definition: http://www.oreillynet.com/lpt/a/6228
I think it's the "End of the release cycle" and "Lightweight programming model", involving rapid iterations and simplified deployment, where Java may be less suitable. Thoughts?
I would argue that there is no specific technology for Web 2.0. The main concept behind a Web 2.0 application is that much of the content is provided by it's users and not one specific person. If you can achieve this with Java, then that is fine. Many people are creating startup companies with technology that is free because they don't have the capital.
there are two totally different concepts called 'Web 2.0':
user generated content (usually with some 'social networking')
dynamic AJAX-based web apps
the second one somewhat dictates the technologies that you have to use (at least some JS, and machine-readable content in (some) responses). of course, there's nothing against using Java (or CGI, Perl, whatever) on the server.
the first one doesn't have anything to do with technology, and everything to do with the service itself you're providing. again, you can use anything you want.
why are these two mixed in the same therm? and more to your point: why are dynamic languages assumed 'more appropriate' for it? i'd guess it's just a temporal coincidence, all three things (user-generated content, AJAX, serious dynamic languages) jumped to the limelight roughly at the same time, and most of the proponents of each concept are using the other two.
in short, better avoid undefined marketroid terms like "web 2.0", and use proper descriptions. at least while working. when selling to the VCs and PHBs use any and all buzzwords that come near!
Of course it is. Java has some extremely mature and well tested frameworks for doing web applications, including so called Web 2.0 websites. Hibernate, Spring, even Struts and Tiles, or even Plain Old Servlets will do.
In addition, Java is very fast (see the Debian speed tests) compared to Ruby, which is good for websites handling lots and lots of requests, which Ajax does tend to inflate the number of! :)
Your friends, with all due respect, are dolts. Java is a rich language with incredible tools support. You could build a fantastic backend in Java and use anything you want for the front end.
It took me a while to figure out what to say in this answer because I was agape at the sheer craziness of the notion.
Where I work, all our applications are built using Java. They are web apps, built using either hibernate or direct JDBC on the data end, and using Struts or JSF for the presentation side. I would not work with JSF again unless we had access to the latest version (we were stuck on 1.0 because of our IDE) as we encountered MANY issues with it and were told that they had been fixed in later versions. As for the rest of the technologies, they work fine if you know how to use them.
In general, you are going to be better off developing in a language you know well and is capable of doing the job than in one you barely know but may be the "best" language for the job.
"Web 2.0" more often than not refers to the user interface than the underlying technology powering the webapp.
What's stopping a Java-based webapp from being totally flashy and AJAX-y in the UI layer? Nothing. You'll be writing the middle layers in Java - which is transparent to the user anyway.
I think that the people who gave you this advice are more concerned about being "hip" and (what they perceive to be) current with what is "hot" right now - which is totally irrelevant to the markup of your UI. I wouldn't listen to them.
Wonderful day, I get to post about Wicket again! :)
Java is very suitable for Web2.0 applications as long as you know how to use the tools which are available for you. The Apache Wicket I just linked is a POJO-based web application framework with such incredible way to hide all that boring server-client stuff that it allows you to do just about anything you can think of. The strong point here is that since Wicket is just POJOs, you can get very fast, iterative and unit tested code that works just as one would expect in browser.
To create Web2.0 sites with Java you don't of course have to use Wicket but I'd recommend it anyway.
I build Web apps at work in Java and then I use PHP for my personal projects. While Java is certainly capable of all that you might require it to do, I've found it a little cumbersome at times and have wished I was using PHP (or another language, for that matter). It does depend on what type and size of application you're building, but I think there are good reasons why many people choose PHP, Ruby and Python for their personal projects, i.e. where they get to choose what language they build Web apps in (and not their superiors).