Webinar Recording: Spec BDD with PhpStorm and PhpSpec

The recording of our May 27th webinar, Spec BDD with PhpStorm and PhpSpec with Kacper Gunia, is available on JetBrains YouTube channel.

Useful links from the webinar:

Continue reading

Posted in Webinar | Tagged , , , , | Leave a comment

Nitra goes Open Source!

We’ve been rather quiet about Nitra since our introductory blog post, back in November of last year. But we haven’t been sitting still. We’ve been busy building the foundations to a project that we want to see as the basis for a lot of future work here at JetBrains. Now that we feel we’ve reached a minimum viable feature set, as well as a good architectural base for future development, we’re very happy to take the next steps on our roadmap, and release Nitra as an Open Source project.

The source is currently available on GitHub, released under the Simplified BSD license.

What is Nitra?

As a reminder, Nitra is a framework for the next generation of language tooling.

Traditionally, languages don’t ship with any kind of IDE support. It is up to tools vendors to provide syntax highlighting, outlining, code completion, navigation, find usages, refactorings and so on. Some of these features, such as syntax highlighting and outlining can be crudely implemented in a manner similar to regular expressions, but the more powerful features require a deeper understanding of the language.

Ideally, a language service should be able to parse a file into a form that it can reason about – an abstract syntax tree (AST). With such a deep knowledge of the underlying language, it knows what nodes in the tree are keywords for syntax highlighting, knows where blocks start and end for outlining, can pull out identifiers and their usages for code completion and navigation. Manipulating the tree can reformat or even rewrite the source code, enabling refactorings.

This is what JetBrains does right now, and, as a company, we’re very good at it – ReSharper ships with parsers and ASTs for approximately 20 file formats, and the IntelliJ ecosystem supports many more. As one product manager put it: “We’re JetBrains. We write parsers for breakfast”. But it’s busy work.

Nitra is designed to take away this busy work, allowing us to support more languages, quicker, and to focus on the higher levels in the stack of language tooling, such as analyses and quick fixes.

Nitra is a language for describing grammars, and the abstract syntax trees to represent them. It is also a build tool to compile the grammars into parsers, and generate the classes required to represent and navigate the AST. And it’s also a set of language services that use the grammar to provide automatic syntax highlighting, outlining and brace matching.

What’s more, Nitra’s grammars are designed to be extensible and reusable. A simple example would be the base building block grammars that ship with Nitra, such as Whitespaces and CStyleComments. Both clearly useful in many languages, and can be simply included and reused in a larger grammar.

A better example would be HTML, which allows for embedded “islands” of JavaScript and CSS. The HTML grammar could include the JavaScript and CSS grammars and allow full parsing of a typical HTML file. Take it further, and look at .net’s Razor web templating engine. This is a server-side HTML file that includes not only JavaScript and CSS, but also C#. Build a grammar that includes HTML, JS, CSS and C#, and you’ve got a parser and an AST that can handle Razor files.

Read Hadi’s Introduction to Nitra post to see an example grammar, and check out the wiki for documentation, especially for the syntax of the grammars.

Current Status

While we’re making Nitra Open Source today, this should not be considered an end-user preview. It’s a low-level language toolkit, and if you want to use it, expect to get your hands dirty. Here’s what it currently supports:

  1. Grammars to define lexer-less parsers and ASTs that can be extended at compile time or runtime, supporting composition of languages, or languages with extensible syntax, such as Nemerle
  2. A command line tool to compile grammars into an assembly containing the parser and the AST classes (grammars can also be compiled inside Visual Studio)
  3. A Windows application to load and test grammars
  4. A Visual Studio language service that uses Nitra to parse files and provide automatic syntax highlighting, outlining and brace matching. Current work is to increase the automatic support here to include go to declarations, find usages and rename refactorings

But this is still a work in progress. There are things that don’t yet work. The source reflects this in places, with incomplete grammars (for example, C++) and some references to internal test tools and file locations that aren’t included in the source code. This just reflects the status of the code as an active project, and will get cleaned up over time.

Building Nitra

Before you can use Nitra, you need to build it. Full instructions for building Nitra can be found here. Here’s an outline:

  1. Install Nemerle. Nitra is built by the Nemerle team, in Nemerle, so requires Nemerle in order to compile. You can download the latest version from the Nemerle site (there currently isn’t a VS2013 build that supports Nitra. One will be made available shortly. In the meantime, you need to use VS2012)
  2. Once installed, you need to open a command prompt in the Nitra folder, and run “BuildBoot.cmd”. This bootstraps the build process, building the boot versions of the assemblies required by the main product in order to build. you only need to do this once.
  3. Build the Nitra.sln solution in Visual Studio
  4. Set the environment “NitraPath” to point to the root of the source distribution. The Visual Studio integration uses this to locate the “NitraGlobalConfig.xml” file which tells it which grammars to load

Using Nitra

The solution contains several test applications you can use to give Nitra a go.

Firstly, there is Nitra.Visualizer, which is a Windows application that is pre-configured to load test files from the Nitra\Tests\Visualizer folder. It will use the grammars defined in the Nitra solution to load test files and compare the output with a known-good “gold” file. If the output is different, the test fails, and you can see the differences in the “Diff” tab. If the test succeeds, the file is displayed in the right hand pane, with syntax highlighting and outlining applied. You can also navigate the AST under the “Reflection” tab, and see how Nitra will output it in a pretty-printed version.

Nitra.Visualiser showing a C# file

There are several different tests and languages supported here, including C# and JSON, and a calculator DSL, too.

In fact, there’s also another sample app that uses the calculator DSL directly – Sample.Calc.App. This is a console application written in Nemerle that references the calculator grammar and parses input from the command line. It then pretty prints the expression you enter, outputs it with syntax highlighting, and evaluates it, using a Value() method that is defined as part of the grammar.

Calculator sample app

And of course, there’s the Visual Studio integration. Once this project builds, you’ll get a Nitra.VisualStudio.vsix file in the bin\Debug folder. Double clicking on this will install it into Visual Studio (you can also set up the debugging command line so you can just F5 the project). Don’t forget to set the “NitraPath” environment variable as mentioned above. The extension adds support for *.json files, and will parse *.csn files as C#, but most usefully, it will parse, syntax highlight and add outlining and brace matching for *.nitra grammar files.

vs_extension

There are other sample projects in the solution, and you can also run the test suite with the “run.cmd” batch file in the Nitra\Tests folder.

Why Open Source?

The plan has always been to release Nitra as Open Source. After all, it’s written in Nemerle, by the Nemerle team, and Nemerle is Open Source. However, we wanted to wait until we had a core platform that was ready to be opened up further. We feel that we have that now, so here we are.

And of course, we’re accepting contributions! If you’d like to get involved and help build the next generation of language tooling, take a look, raise issues, send pull requests.

Please let us know what you think!

Posted in New Products, News | Tagged , | 19 Comments

Live Webinar: Embracing AppCode 3.0, June 12th

Join us Thursday, June 12th, 11:00 AM – 12:00 PM CEST (9:00 AM – 10:00 AM GMT) for a free webinar, Embracing AppCode 3.0 with Rafał Legiędź.

AppCode Logo

AppCode is designed to ease the everyday routine for developers who are facing the challenges of Objective-C development as they build apps for Apple devices such as Macs, iPhones and iPads.

During this webinar we’ll be going through a simple app creation showing AppCode awesomeness by the way. Starting with all the “standard” magic like code assistance, code generation and refactoring features, through debugging and integrations and finally ending with test driven development and CocoaPods support. A demo will also highlight features that are available in new AppCode 3.0.

Space is limited, please register now.

About the Presenter:

Rafał LegiędźRafał Legiędź works as a principal software developer for ABB Poland. He believes that being pragmatic in our field is very helpful and proves that by switching technologies he uses whenever there is a need or an opportunity to learn new concepts. Started with .NET back-end solutions, he quickly became a web guy using technologies of few sorts and now he develops enterprise iOS and javascript apps

Keep up with the latest AppCode news on AppCode Blog and on Twitter @AppCode.

Posted in Events, Webinar | Tagged , , , , | Leave a comment

Webinar Recording: Developing Web Applications with WildFly 8

The recording of our May 21st webinar, Developing Web Applications with WildFly 8, is now available on JetBrainsTV YouTube channel.

In this webinar, Arun Gupta gives an overview of the features available in WildFly, RedHat’s open-source application server, and shows you how to use them for building modern web applications through several live demos.

WildFly 8 (née JBoss Application Server) is Red Hat’s open source Java EE 7 compliant application server. It contains robust implementations of WebSocket, Batch, JSON, Concurrency, JMS2, JAX-RS 2, CDI 1.1, and all Java EE 7 technologies. Undertow is the new cutting-edge web server in WildFly 8 and is designed for maximum throughput and scalability, including environments with over a million connections.

Below are questions from our webinar answered by Arun and Andrey.

Continue reading

Posted in Screencast, Webinar | Tagged , , , | Leave a comment

Live Webinar: Making YouTrack Follow Your Process, June 4th

Join us Wednesday, June 4th, 14:00 – 15:00 GMT (10:00 – 11:00 EDT) for a free webinar, Making YouTrack Follow Your Process with Dmitri Nesteruk.

YouTrack Logo

Every company and every business has its own operational rules, and this affects everything including issue tracking. The way issues are assigned, analyzed and triage is unique, which is why the flexibility of an issue tracker is essential in bringing value to each part of the organization.

In this webinar, we shall see the ways YouTrack allows the issue tracking process to be customized so as to follow a defined process. We shall discuss the ways in process automation is supported out of the box as well as the ways in which users can define their own custom process scenarios.

Space is limited, please register now.

About the Presenter:

Dmitri NesterukDmitri Nesteruk is a developer, speaker, podcaster and a technical evangelist for JetBrains. His interests lie in software development and integration practices in the areas of computation, quantitative finance and algorithmic trading. His technological interests include C#, F# and C++ programming as well high-performance computing using technologies such as CUDA. Dmitiri has been a C# MVP since 2009.

Keep up with the latest YouTrack news on YouTrack blog and on Twitter @YouTrack.

Posted in Webinar | Tagged , , , | Leave a comment

SensioLabs Partners with PhpStorm for the Bright Future of Symfony Community Tooling

Today we are pleased to announce SensioLabs as a PhpStorm global training and technology partner. SensioLabs developers use PhpStorm in-house while their coaches use it during training courses. Through our partnership, SensioLabs’ trainees can now take advantage of special PhpStorm pricing on new personal licenses.

New SL_blanc-1SensioLabs, an Open Source software and SaaS editor, is known for constantly pushing PHP language limits worldwide, especially following the creation of Symfony, the PHP framework for companies, and Twig, a templating engine. Following the recent closing of 5 M€ round A financing (Dec 2013), SensioLabs intends to increase company growth with more and more professional solutions.

In addition to the numerous service, training and support offers available, the company conceives e-solution products destined for web developers and businesses, the constant goals being improved quality, productivity, direction and deployment of its applications.

Beyond our newly announced training partnership, JetBrains PhpStorm team and SensioLabs have been working closely together over the last year as technology partners making sure that the most advanced and smart development tools are brought to the Symfony community. This cooperation has already produced exciting results, and we will be providing more updates in the coming months.

We are confident that we will be able to significantly improve the PhpStorm development experience with the Symfony framework and related technologies, and SensioLabs products & services.

Posted in Partners | Tagged , , , , | 1 Comment

Live Webinar: Spec BDD with PhpStorm and PhpSpec, May 27th

Join us Tuesday, May 27th, 14:00 – 15:00 GMT (10:00 AM – 11:00 PM EDT, check other zones) for a free webinar, Spec BDD with PhpStorm and PhpSpec with Kacper Gunia.

In this webinar we will dive into BDD workflow in PhpStorm IDE and show you how to drive the design of your code with PhpSpec. With a focus on refactoring, source and file navigation, live templates and autocompletions you can learn how to shorten your development feedback loop and write well specified applications faster.

This webinar is geared towards developers of different proficiencies and there will be an opportunity to ask questions. Space is limited, please register now.

kacper_gunia_profile200_200
Kacper Gunia works as Software Engineer and Trainer for SensioLabs UK in London. He is a Symfony Certified Developer with 5 years of experience with framework. Passionate about TDD/BDD, huge believer in Open Source and Agile practitioner. 

Keep up with the latest PhpStorm new on PhpStorm blog and on Twitter @PhpStorm.

Posted in Events, Partners, Webinar | Tagged , , , , | 2 Comments

Live Webinar: High-Performance Computing with C++, May 29th

Join us Thursday, May 29th, 14:00 – 15:00 GMT (10:00 – 11:00 AM EDT) for our free live webinar, High-Performance Computing with C++ with Dmitri Nesteruk.

logo_resharper

Are you are a developer interested in getting the most out of your hardware? Are you looking to take the computational performance of your applications to the next level? Then this is the webinar for you! In this webinar, Dmitri Nesteruk, our ‘resident quant,’ will talk about some of the language features, libraries and expensive toys he uses to get calculations done as quickly as possible.

Languages such as JavaScript may receive a lot of hype nowadays, but for high-performance, close-to-the-metal computing, C++ is still king. This webinar will take you on a tour of the HPC universe, with a focus on parallelism, be it instruction-level (SIMD), data-level, task-based (multithreading, OpenMP), or cluster-based (MPI). We’ll also discuss how specific hardware can significantly accelerate computation by looking at two such technologies: NVIDIA CUDA and Intel Xeon Phi. (Some scarier tech such as FPGAs will also be mentioned).

Space is limited, please register now.

About the Presenter:

Dmitri NesterukDmitri Nesteruk is a developer, speaker, podcaster and a technical evangelist for JetBrains. His interests lie in software development and integration practices in the areas of computation, quantitative finance and algorithmic trading. His technological interests include C#, F# and C++ programming as well high-performance computing using technologies such as CUDA. Dmitiri has been a C# MVP since 2009.

Keep up with ReSharper news on our .NET Tools Blog and on Twitter @ReSharper.

Posted in Events, Webinar | Tagged , , , | Leave a comment

Meet PhpStorm Team at phpDay Italy, DrupalCon Austin, Dutch PHP Conference in May-June

phpstorm_logo_icon (1)The PhpStorm team is gearing up for three conferences in a row during the upcoming May-June events season visiting: phpDay Italy (May 16-17, Verona, Italy), DrupalCon Austin (June 2-6, Austin, Texas, USA), and Dutch PHP Conference (June 26-28, Amsterdam, The Netherlands).

At our booth, the team will be happy to show you PhpStorm demos, answer any questions you have in mind, share information about future releases, and of course have fun!

Be sure to register for our free license raffle and grab one of our awesome yo-yos and other gifts. Even if you don’t win a free license, we’ll send you a discount toward a new PhpStorm Personal License.

Continue reading

Posted in Events | Tagged , , , , , , , | Leave a comment

Live Webinar: Developing Web Applications with WildFly 8

Join us Wednesday, May 21st, 16:00 – 17:00 GMT (09:00 AM – 10:00 PM PDT) for our free live webinar with Arun Gupta, Developing Web Applications with WildFly 8.

IntelliJ IDEA Logo

WildFly 8 (née JBoss Application Server) is Red Hat’s open source Java EE 7 compliant application server. It contains robust implementations of WebSocket, Batch, JSON, Concurrency, JMS2, JAX-RS 2, CDI 1.1, and all Java EE 7 technologies. Undertow is the new cutting-edge web server in WildFly 8 and is designed for maximum throughput and scalability, including environments with over a million connections.

In this presentation, Arun Gupta will give an overview of the features available in WildFly and will show how to use them for building modern web applications through several live demos.

Space is limited, please register now.

About the Presenter:

Matt EllisArun Gupta is Director of Developer Advocacy at Red Hat and focuses on JBoss Middleware. As a founding member of the Java EE team at Sun Microsystems, he spread the love for technology all around the world. At Oracle, he led a cross-functional team to drive the global launch of the Java EE 7 platform through strategy, planning, and execution of content, marketing campaigns, and program.

Keep up with IntelliJ IDEA news on IntelliJ IDEA Blog and on Twitter @IntelliJIDEA.

Posted in Webinar | Tagged , , , , , | 3 Comments