Get 'em before they get You


Published on

IntelliJ Idea Analysis Tools

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • We all make stupid mistakes
  • On demand - IDE, cmd, CI
  • class Example { void bar() { while (baz) buz.doSomething(); } }
  • On demand - IDE, cmd, CI
  • For questions on why we charge money Because your get what you play for - added productivity, ease of use and a more intelligent environment. What we’re trying to do is bring Java developers some extra value. Unlike our competitors we’re not trying to a) bring people to the Java platform for long-term profit or b) make money off tools like MyEclipse or WSAD consultancy. If it’s only the price tag that holds you back, you’ve got options. If you need IDEA for an open source project or educational purposes, then you can use IDEA for free. And if you’re writing software for a living and charging money for your work, then that extra value I’ve just talked about means a lot to you, for the cost of 2 - 3 tanks of petrol. Our innovation has driven the IDEs for the past 9 years, many other IDEs use the functionality that we pioneered and they’re still chasing things as our refactorings and our editor, as well as other things. The cash that our fans have given to us over the years we’ve used to drive productivity. And since we have a high percentage of people who upgrade each year that productivity bonus is obviously worth it. Thanks to this policy we can keep our exceptional innovation pace and ensure that you always may develop with pleasure. For the money you may be productive right now. Judge yourself how many of the features I’ve shown today and in what quality you can find in your IDE. It would take quite some time, so let’s discuss that at the beer party. Developers should use the IDE they feel most comfortable with. Some of our customers claim that IDEA pays for itself within three weeks. Why should they participate in the EAP First it’s you who benefits. You get the features you want, you get them smoothly integrated into the rest. Second, it is the community that benefits from the feature being available. And we will make sure, it’s not implemented as a solitaire feature, but smoothly integrated with the rest of the IDE. I am not sure about the other IDEs, how easy it is to get some core functionality changed. If you do, let’s talk about it after the presentation and compare it with the feedback mechanism we have for IDEA. I’d be interested in such a comparison. Others are trying to copy us. That’s a good sign that we are ahead of the crowd. It gives us an indication that we are doing the right thing, we provide functionality that the developers want. We are not afraid as we are certainly not standing still, we are a moving target, a quickly moving one. Your tool is bloated with unneeded functionality We don’t add functionality because we need to sell some hardware or software and need support for it in the IDE , we develop IDEA based what the developers ask for. Each IDEA version starts with intense on-line brainstorming with the customers about what they want to be supported in the next version. And the functionality is gradually tuned in the EAP. Our future success depends on our ability to provide functionality that the developers need. I believe that such a short feedback helps us innovate faster. Developers ask for them, we can't ignore Maven, Spring or Hibernate. We’re expanding productivity to other domains. You don't need to upgrade, or you can disable the unwanted plugins. Why don’t we make IDEA a set of plugins for another platform Most of the cross-technology support you’ve just seen in my demos is done in the core. The way plugins cooperate makes a real difference. You always have to make a trade off between general-purpose architecture and effectiveness. This is not only valid for IDEs. We are on the effectiveness side. We would loose control over the core. And it is the core that makes the biggest difference. We need to be able to modify the core to smoothly integrate all the pieces together, propagate changes across technology boundaries, reuse key shortcuts, use consistent views and provide new refactorings. Why don’t you standardize on a plugin mechanism, like OSGi There’s currently no real demand for it among our users and we really take seriously what they want. We need to focus on other functionality that they need, like Seam, Flex, Scala, JavaScript debugger and a lot of others. Once OSGi becomes important for them, I’m sure we’ll add it. What are you planning for the next version Flex debugger and other improvements Freemarker Java EE6 Spring 2.5, Spring WebFlow Struts 2 GWT update JavaScript debugger Seam support Ruby IDE Web IDE – Python, PHP Performance needs improvement Do you have a specific problem, maybe our technical support could resolve the issue, in general we don’t think IDEA is performing badly, disable some plugins to save memory and speed-up startup, use multi-core processor to leverage the new multithreaded core Why don’t we open source IDEA Do you frequently read or modify sources of your tools? If so, you are more an exception than a rule. There are not many developers, who deliberately modify their own tool and I certainly respect that. Those are usually the most innovative and forward thinking among programmers and they have my respect. We consider the sources as part of our know-how and keep them internal. However, we offer EAP to put customer-driver innovation into IDEA and we’ve open sourced considerable parts of IDEA to help developers develop plugins. Why is our off-line documentation so weak IDEA is evolving so quickly that documentation sometimes lags behind a bit. However, the documentation can only provide a general guide, but most problems developers face are very specific ones. That’s why all IDEA users can use our on-line technical support and the EAP community forum to get answers to their specific problems. We also gradually improve the on-line documentation, demos and tutorials. And people like it. Subscription licensing Currently our customers are happy with the licensing scheme that we have. However, if the preferences of our customers change at some point, we’ll listen to them and we may start offering other options, as well. We were considering the subscription licensing some time ago, but customers didn’t really want that at that time. What’s your attitude to open source Open source is a very useful phenomenon, which gives us great tools and frameworks, like Tomcat, Hibernate, Spring or others and allows developers to easily cooperate and customers to avoid a provider lock-in. So we support open source projects with free licenses and we’ve opensourced parts of IDEA under Apache 2 license for others to see our code, get inspiration for writing their own plugins and possibly enhance IDEA? There are a number of IDE's on the market. Users like choice and don't like monopolies. Where do you think the differentiation should be? (Features is only one aspect, please consider also quality, support, target users, etc.) Of course differentiation takes place according to the features of an IDE, but as we've been learning over the years, a feature list is just the surface - and often it's not very valuable at helping to differentiate, especially when you have good competitors. I can't speak for the other companies here, but where JetBrains really tries to stand out is with the DEPTH and INTELLIGENCE of the features that we provide. For example <fill example here>. This level of quality is really important for developers who aim to make themselves more productive. We aim to build a tool that understands what you plan to do, before you do it, so that your projects are more fun, and are completed quicker -- and the challenges that you face as a developer aren't caused by your IDE. Of course, we also believe that a company should be there to support its customers, so we provide 24/7 technical support, and our development team is highly interactive in our help forums and Early Access Program. Where do you get your ideas for new features and enhancements? How much do you listen to your users and how much are you innovators? We're highly innovative -- with a specific goal in mind: developer productivity. We look to industry trends, community involvement, and a handful of visionaries for ideas to build into IntelliJ IDEA. Our users are important to us, and we listen intently to what the people in our Early Access Program have to say -- the community definitely helps to guide our development. That’s a really good question. Oh, I’m glad you asked. The answer would be rally long I’m not working on that problem That’s a good use case to try our technical support Oh, that’s really deep Interesting questions for beer discussion: <Is anyone here working in such a mixed IDE environment? How many of you are restricted by the employer or the customer in which IDE they may use? How did they like the pre-prepared demo?> New core features # "Extract method object" refactoring # Type migration refactoring # "Create Test" and "Go to Test" actions - Control + Shift + T # "Unwrap statement" action – Control + Shift + Delete # Global data flow navigation (Analyze | Dataflow to this) # "Generate toString()" plugin bundled # New code coverage runner # Second smart completion (press Ctrl-Shift-Space twice to get more context-sensitive completion suggestions) # IntelliLang plugin bundled (@Language annotation, regular expression syntax validation etc.) # Per-file encoding support Greater Performance JBoss Seam Javascript/Flex Debugger Struts 2 Spring 2.5 Multi-Dialect SQL Console Out-of-the-Box Language Injection FreeMarker, Velocity and GWT 1.5 REST WebServices Miscellaneous Improvements Revert Changes intention action Highlighting of implicit parameters for anonymous classes Show Applied Styles tool window Bundled GuiceyIDEA plugin for Guice support Team Foundation Server integration New Java refactorings from former Refactor-J Improved Groovy support, with Grails 1.0.3 and new refactorings Improved Ruby support, with Ruby debugger Scala support Python support Flexible settings storage with IntelliJ IDEA Server
  • Get 'em before they get You

    1. 1. <ul>Get 'em <li>before they get you </li></ul><ul>V á clav Pech <li>Software Developer, Technology Evangelist JetBrains, s.r.o. </li></ul>
    2. 2. <ul>Agenda </ul><ul><li>Static Code Analysis
    3. 3. Duplicate Detection
    4. 4. Stacktrace Analysis
    5. 5. Dataflow Analysis
    6. 6. Dependency Analysis
    7. 7. DSM </li></ul>
    8. 8. <ul>Static Code Analysis </ul><ul><li>Searches AST for bug patterns </li></ul><ul><ul><li>On demand </li></ul></ul><ul><ul><li>On the fly </li></ul></ul>
    9. 9. <ul>Abstract Syntax Tree </ul>
    10. 10. <ul>A quick peek into the sources </ul>
    11. 11. <ul>Advanced capabilities </ul><ul><li>Quick fixes
    12. 12. Profiles
    13. 13. Suppressing false positives
    14. 14. Spell-checker
    15. 15. Command-line and CI integration </li></ul>
    16. 16. <ul>There’s more than Java out there </ul><ul><li>JavaScript
    17. 17. CSS, HTML, XML
    18. 18. GWT, Struts
    19. 19. EE, ME </li></ul>
    20. 20. <ul>722 </ul>
    21. 22. <ul>Create your own bug patterns </ul><ul>Define </ul><ul><ul><li>an AST sub-tree to search for
    22. 23. an AST sub-tree to replace it with </li></ul></ul>
    23. 24. <ul>Helper annotations - JSR 305 & 308 </ul><ul><li>@Nullable, @NotNull, @Nls, @NonNls </li></ul><ul><li>@PropertyKey, @Pattern, @Language </li></ul><ul><li>@ThreadSafe, @GuardedBy
    24. 25. @Immutable </li></ul>
    25. 26. <ul>@Pattern </ul>
    26. 27. <ul>Language injection </ul>
    27. 28. <ul>Stacktrace Analysis </ul>
    28. 29. <ul>Dataflow Analysis </ul><ul><li>From / To here </li></ul>
    29. 30. <ul>Duplicate detection </ul>
    30. 31. <ul>Dependency Structure Matrix </ul>
    31. 32. <ul>Summary </ul><ul><li>Customize
    32. 33. Use permanently
    33. 34. Run continuously </li></ul><ul>So that you can sleep better! </ul>
    34. 35. <ul>Questions </ul><ul>? </ul>