Plugins development: Plugins allow to add functionalities to a client, server, or editor, but do not extend the behavior of the Server or Client (for exemple, a Plugin can't add new custom widgets)
J661 extensions development: J661 extensions allow to extend the behavior of the Server or Client, for exemple adding new widgets, a new Protocol, etc..
The core J661 development itself. Note that the core J661 code tries to be as close as possible to the ARINC 661 standard, which means that there are no custom widgets in the core
Note that normally you should not have to change J661 code to add your functionalities, J661 is very modular, normally developing a Plugin or a J661 extension will be enough to fullfill your needs.
You should develop a Plugin if you want to add functionalities to the Server, Client, or Editor but do not want to change the way the Server or CLient works. For example existing Plugins:
Scenario Plugin: Allow to save and load runtime Buffers in the Client or the Server
The J661 Project provides several thousands of Unit Tests defined using JUnit. See the Unit Tests article for how to develop Unit tests on J661 functionalities.