It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
Firstly, in my opinion, this question is relative to programming, as much as the answers (and the question itself) is subjective, I would like to see some of these subjective opinions, and other ideas that come from it.
My company is deep in bed with oracle. They are making a strong move towards java, and well forcing JDeveloper down on us (me) as the 'best tool' for the job. Now, dont get me wrong, JDeveloper looks amazing, it has all these nice trinkets that would make anyone smile when unwrapping. But...
I tend to always end up having to investigate some tiny problem that the IDE suffers to do right. Essentially bugs. Like at times when for no reason EJB's do not deploy anymore. Or the ADF front end stop calling data controls for action buttons. Then I have the times that It crashes out completely when editing persistance information. In the end, I spend more time figuring out what is wrong with it, to no avail. And well, my company is not about the take out money to get support for the development tool. I end up sitting with problems that take hours up to days to resolve, which should be taking 10 minutes.
I have seen and experienced similar productivity killing problems in IBM's websphere products too. And not It's not just me, I have seen teams unable to work for days because of issues.
My solution to this has always been to use the eclipse j2ee set. It allows me to be more in control of everything that's being used. And so, even if eclipse gives me problems, I can resolve these issues. And well, personally, I would prefer my company accepting that as a preferred tool, as solving problems would be easier, and there would be more 'professionals' arround, as our problems would more likely be j2ee related, and server related rather than IDE related (We get tons of server side support). I feel the 'abstraction' that larger IDE's provide can cause lots of headache's and tend to be a project killer.
Why do I struggle so much with JDeveloper. Am I alone?
Is it wrong of me to take a stand and recommend going against JDeveloper as the core development tool in our company?
Because well, this is the 'campaign' I would like to walk into now, up to the point of demonstrating the flaws, as the video's only show the perfect moments.
You are not alone! I could rail against JDeveloper but i'll restrain myself.
Unfortunately, JDeveloper is the only IDE that supports all the Oracle-centric technology. So, while i'm sorry for your pain, and, trust me when i say, i understand more than you know, but, in an Oracle house, no other IDE will do. It's a real shame that you don't have support though. You'll likely need to file lots of bugs.
It's really unfortunate that Oracle seems insistent on continuing with JDeveloper even now that they own NetBeans. JDeveloper is far behind Eclipse and NetBeans. They'd have far greater developer acceptance of their technology if they actively supported Eclipse and/or NetBeans, at the very least, in parallel with JDeveloper. There's actually quite a nice, extensive set of technology in ADF that is being hidden behind and hampered by such a horrendous development tool.
And as a means to try and help you solve all the problems you'll encounter with JDeveloper, try this. Use two local mercurial or git repositories. One for your JDev system folder (init in the parent of system/) and a repo for your application/project. Before finishing (or starting) any wizard, add and commit (hg com -Am 'savepoint' or git commit -am 'savepoint') both repos. This'll give you a way to rollback and also diffs of how JDeveloper broke a working project which might give you clues about how to fix things.
Also, you might want to keep a log for your managers to show how much time you spend managing JDeveloper instead of progressing on your projects.
Good luck.
Note: Version control on the jdev system folder is a little questionable for rollbacks since it seems jdev buffers some writes and keeps some files open. Which means you might take a snapshot of an inconsistent or incomplete state. It's better to use that repo as an ongoing view of what is changing.
EDIT: Also see Oracle Enterprise Pack for Eclipse
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
So, recently I've resumed my studies (2nd year HS) and in this year we'll be using Java as the primarily language for everything; I've been using Java independently for about a year and I love IntelliJ, however our teacher just refuses to even take a look at it, just demands to use NetBeans, regardless of the several technical arguments I've had with her.
She argues that it's because the computers are fairly old and crappy (which they are) but with that in mind, is that really a meaningful argument to give?
My ASUS laptop can handle IntelliJ pretty well with 16GB of RAM, as you can see here:
However, due to some weird installation problems I can't personally test NetBeans (yuck), and I'm not a fan of downgrading my RAM to 4GB (The capacity of the school's computers).
So my question is, would the performance impact of IntelliJ be substantial enough to justify the use of NetBeans, even though IDEA it's (In my opinion) a much better IDE?
And if so, wouldn't something lighter like Eclipse make more sense?
There is no straightforward answer to your question:
IntelliJ IDEA is a great Java IDE. Its main advantage over NetBeans and Eclipse is the better support for Android development (Android Studio which is built on IntelliJ IDEA became the official IDE for Android in 2013). In contrast to Eclipse, IntelliJ IDEA and NetBeans offer a more comprehensive range of out-of-the-box functions that making it easier for beginners. There are more plug-ins available each for IntelliJ IDEA and for Eclipse than for NetBeans. These are just some of the advantages of IntelliJ IDEA.
IntelliJ IDEA is a commercial product (although some parts are open source, but development is not driven by the community). For those who pay for a Java IDE, the higher memory requirements will probably not be a problem. Unlike Eclipse and NetBeans, IntelliJ IDEA's Git integration is realized by delegation to the Git command line (instead of using JGit), which has also some disadvantages. By default, files are automatically saved, but compiled before starting. Some like that, others prefer incremental compilation on saving as in Eclipse. Which one is the best Java IDE depends on the user's usage and preferences.
To answer your question, the higher memory requirement at only 4 GB of available RAM (your screenshot shows 637.3 MB / 4096 MB = 15.6 % only for the (idle?) IDE) is a valid argument against IntelliJ IDEA (especially when you consider that the memory requirements will continue to increase with each new version), but not an argument for NetBeans. The decision was certainly made not only because of this single argument. I would probably have given the arguments a different weighting and come to a different decision as your teacher.
However, you should appreciate the teacher explaining her decision. I guess you won't convince her to revise her decision. But why not develop at home with your favorite IDE and show/review the code to/with your teacher in her favorite IDE? You would get to know the advantages and disadvantages of at least two Java IDEs. Nobody is more annoying than those guys that tell people using the wrong thing just because it's not the thing they prefer.
A Mac user, an IntelliJ user, and a vegan walk into a bar. How do I
know? Well after 2 minutes THE WHOLE F'ING BAR KNEW!
Let's not talk about Eclipse and stick to NetBeans and IDEA. Cause I thing Eclipse is not match for these two at all! I guess It is good just for its lightness.
IDEA is not necessarily better IDE than NetBeans, I guess it's all about the magnitude of program you want to develop.
Netbeans is so much more lighter, faster, more intelligent and its features for network programming are amazing.
In other hand, IDEA is truly a great IDE for developing big softwares. It is more stable, more powerful, it has more functionality, and it has plugins that you can use without any worries.
As someone who has used both of them, I think Both are great, but I prefer Netbeans for light programs.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I'm currently developing a programming contest website, and want to implement support for submitting code and running it on the website. After quite a bit of googling, I still haven't found any "guides" for this.
Does anyone know of a website(or other sources) that contains some basic guidelines or ground rules for this?
Appreciate all replies.
PS: If anyone wonders about all the programming language tags, I'm planning on supporting at least these languages.
Careful -- if you're finding it difficult to break this project down into some smaller, more tactical problems, I'd strongly suggest that you make no attempt whatsoever to actually run anyone else's code on your site. In terms of creating the site itself, I'd suggest leveraging pre-built components or services where possible -- Wordpress, GitHub, etc.
Once you've got the submissions, you'll want to have a way to run them safely. For all practical purposes, this means that you should assume that any machine you run someone else's code on might spontaneously burst into flames. While it's true that some of these languages have features you should be able to use to run code in a "sandbox", you're probably not going to be expert enough in all these languages to be able to properly secure all of them.
It seems that something like Amazon's EC2 might be helpful -- spin up a VM when you need to run a submission, and throw it away when you're done. They've got some pre-configured images that would probably be well-suited to running this code, and if something gets buggered up because of buggy or malicious code, you don't mind too much because you're just going to throw it away when you're done.
There is a site that already does this, albeit for a particular purpose: scraping data.
https://scraperwiki.com/ - Unlike jsfiddle, scraperwiki executes server-side code. As far as I can gather, they likely sandbox the environment via amazon instances. Not sure that their code can be entirely audited and sanitized, given the variety of languages and scraping libraries they support.
I think most people are baffled as to how scraperwiki keeps hackers and spammers at bay from misusing their resources. They've been rather mum about it; either they've manually audited every bit of executed code, or hackers/spammers haven't caught onto them yet. Since the site has a specific function, they probably check data utilization to determine suspicious activity. ...but, one man's site scraping is another man's harassment and injection by get/post.
My hunch is that they'll never publicly spell out what their security audit process is like.
If you really had to do it, simplest mechanical way of doing this without virtualization is to use a variant of eval(). But, not all languages have that. Which brings you to option B, which is virtualization. Better people than I can explain how to regiment virtual machines to this effect, and will caution you properly on letting strangers abuse your resources. Instead, I'll share my PHP experience.
Some years back I've made a project that does code execution on the fly (on a local machine.) As you type, it takes the code via ajax and executes after each keystroke. Here's a video of its behavior: http://www.youtube.com/watch?v=Yfxrt2pc3pg.
Half a decade and 3 improvement prototypes later, I'm still not sure how I would responsibly lock this down as a common resource.
For Java it is quite simply:
You're have to create Servlet, for uploading source code into server (for
example, via POST request)
Use Java Compiler API to compile source code to bytecode ( tutorial )
Compiled bytecode you're might dynamically load via ClassLoader and launch it (also you're might configure SecurityManager)
And don't forget about MVC architecture :)
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
I currently run a website on LAMP, I am currently in the process of refactoring my code from normal php to Zend framework with Doctrine. I am happy with setup but often find function not found errors on live site cause I have renamed function. Which is frustrating as most of time is wasted is patching these errors.
So I have decided to switch from php to java as the code gets compiled, so just error will not go to live site. With java netbeans will work better.
But as I have not been in touch to j2ee for many years. What is the best replacement for my above setup in java?
Option 1. Jsf 2 with Hibernate
Option 2. Seam
Option 3. Spring
Option 4. Struts with Hibernate
My server has 24 gig ram and 2 core i7 processor and ssd drive on raid 0
Will my server handle the same amount of visitors if java was used without any performance issues?
I like the way I can update my site without losing live sessions(logged-in users). Can I do the same in Java? from my experience each update to site will redeploy the App which resets all the Active Sessions.
I love to consider .Net but from what I have read on most forums, no one recommends it?
Kind regards
Zerone
You problem is not switching to Java from PHP your problem is an good test coverage via unit and in particular with integration tests. From what you wrote the best thing might be to take a look at Selenium and to automate testing as most as possible. You need a complete infrastructure to deploy to a test system and run integration tests on it (Selenium) and after that you can say everything is ok.
Java will perform better, but switching to Java seems like overkill for this situation. That said, I would recommend something based on Spring and Hibernate. Spring can be a real godsend for configuring just about anything in Java and Hibernate is similar to Doctrine.
Apache Tapestry would make a good presentation toolkit for your site. It's a great templating library that is cleaner than JSP.
Java has a large variety of solutions to the same problem. Currently, the mainline Java solution to presenting items on the web is Java Server Faces.
Older (which doesn't always mean worse) solutions include Struts, Apache Tapestry, (parts of) Spring, etc. These solutions benefit from maturity, having an established following, etc. Basically they are good solutions because people already know the points where they fail, and already know how to work around them. The new solutions attempt to remove these pain points, and thus suffer from new pain points. Think of it as not noticing your headache until after you fix your broken arm.
Java will perform much better because the code that delivers the web pages is already in memory, so it avoids a number of items that take time (process spawning, disk access, webserver to language engine communications, etc). There are other PHP solutions which also attempt to solve similar problems using similar techniques; however, PHP has a different coding background and style. For example, Java doesn't need to discard any state between web page requests, something that PHP does (and often uses a number of libraries and workarounds to mitigate).
My recommendation is to use Java, but realize that a direct port will incur a lot of unnecessary expense. Choose a web facing toolkit (JavaServerFaces is the newest and part of the Java EE standard), and start off by porting the static portions of the HTML web pages. Organize your requests by scope (how long the side effect of the request should persist), and use the Servlet standard to store the artifacts generated by the request in the appropriate application, session, request, etc scope.
On the database side of things, there are many standards and solutions to pick from too. Personally, as you don't have a lot of legacy concerns, I would go with JPA. While it is not really a 100% complete solution, it will push you to use an interface which can be replaced by better implementations over time, without the need to recode your application. By stating it isn't 100% complete, I mean that you need to select a JPA provider as the default provider probably won't meet your real-world production needs. That said, the default provider should sustain development oriented work, and JPA's standards should protect you from unexpected differences when you run the code against different environments.
Whether you wish to fully restructure you code into a Java EE multi-tier architecture, of if you just want to embed a large Servlet (server faces is a type of servlet solution) that does everything is more of a function of how much you wish to architect your code. It is not a porting problem. That said, the biggest benefits of a typical Java solution over a typical PHP solution is that the Java architecture is designed to work faster and provide more features out-of-the-box. If you intend to do a port with no rearchitecting, you might be better off just finding out the bottlenecks in the PHP code and fixing them.
if you dont use ajax, i prefer 4 (struts + hibernate):
jsf needs an little bit of expiriences on such heavy load (getter-methods must be fast and so on).
if you use ajax, i prefer an combination of 3 and 1
regards
peter
I just faced this bug with Maven:
http://jira.codehaus.org/browse/ARCHETYPE-304?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel
And it looks that it is not solved yet.
How should I trust Maven and adopt it as our build tool?
Looks more like a bug of that particular archetype, rather than a bug of maven itself.
Having said that, every software has bugs. Even if you buy software, they will still have bugs. In fact, a lot of proprietary software have more bugs than opensource software in my opinion.
Practical advice: See if other people are using it and how they feel. If most people are okay with it, try it a little bit. If that is okay, no reason you shouldn't use it.
Then, in case you have trouble, poke around a little bit. Often you can find a workaround. If that doesn't help, go to forums etc. and ask people. In case of maven, it is such a widely used tool that getting information is very easy.
Now should that not help, you can always fix the bug yourself :)
In your particular case, workarounds include:
1) Generate the necessary structure yourself.
2) Fix the archetype yourself
3) Use something else to get whatever you want, then mavenize that.
4) Ditch maven.
How should I trust Maven and adopt it as our build tool?
I'm assuming that this is NOT a rhetorical question ...
Lots of other people trust Maven enough to have adopted it as their build tool. I cannot give you exact numbers, but it has got to be hundreds of thousands, or more.
One can always use software with known bugs in it. For example, I use Eclipse despite the fact that there are many bugs in it ... and I've seen a few myself. And I see browser crashes and incorrect webpage renderings, etc. I'm sure you knowingly use buggy software every day.
Buggy software usually has workarounds. The problem you are encountering has an obvious workaround. Just skip the archetype bit and create the project structure yourself by hand.
If you are really just looking for an reason/excuse to NOT use Maven, this will do. Hey, it is your project. Do what you like. But bear in mind that you risk your project being left with a legacy of using "old fashioned" build technology, and that may have implications down the track.
Looks at other build tools' bug lists and honestly tell us whether you think they have dramatically less bugs in proportion to features. I don't think you will. It sucks when something you're using has a bug that affects you, but it happens. At least with Maven there is a large community and the possibility to fix it yourself if it's that important. If one bug is enough to make you doubt the entire thing, I'm afraid you're going to run into a lot of disappointment elsewhere as well.
Using Getting back up to speed on Java after 8-10 years as a starting point...
Along with updating myself with the core JDK6 features, would knowing the different components of JBoss be enough of a refresher?
Though I have about six+ years of Java development experience, it's been about five years since I've done professional Java coding.
I used to do a fair bit of work with WebLogic, but as noted earlier it's been five years...
The best "refresher" I've always found when working with a technology I haven't used in a while is to actually try to do some sort of project with it. Reading is great, but actually building something useful is even better.
I'd start by doing the following:
Download a recent version of JBoss from here.
Study the documentation, found here, chapter 12 has a lot of good info for actual application development.
Try building a simple web application using servlets, JSP's and session beans.
As far as whether "knowing the different components of JBoss be enough of a refresher to make you marketable", that depends on who's hiring. If they are looking for someone who already knows these technologies well and can hit the ground running, then probably not. But if you can find a company that judges you based on your attitude/aptitude and willingness to learn, then you may have a shot.
It's always better to have experience, but if someone is driven to learn then they'll almost always overtake the experienced person who does nothing to keep learning and keep their skills sharp. The hard part is finding a company that hires on that basis, because sadly, it's often not the case.
Good luck!