Development of a system for automatically searching for objects in an image. Features of the programming language

Without going into a discussion of the question of whether programming is an art or a craft, we admit: in both cases, a programmer cannot do without tools for creating programs. Along with the evolution of the programming process (from “witchcraft” over machine commands to the use of high-level languages), the possibilities of automating the hard work of programmers have also improved. Early development environments were limited to running compilers, linkers, loaders, and debuggers sequentially using an interface command line. In the 80s, along with personal computers a market has appeared software products a new class - integrated development environments (IDEs) for algorithmic (Pascal, etc.) and then object-oriented (Smalltalk, C++) programming languages. This area has reached its true prosperity thanks to active adaptation by developers. Java language; The most well-known integrated environments for creating programs in this language are Borland JBuilder, Symantec Visual Cafe, Microsoft J++, IBM VisualAge and Oracle JDeveloper.

The main purpose of an IDE is to increase developer productivity. The first development environments, which combined the functionality of program text editors, compilers and debuggers, primarily freed consumers from routine operations. Over time, the IDE's feature set became richer. It included step-by-step compilers, browsers for a more logical presentation of programs, automatic code generation tools, and visual editors for creating graphical user interfaces. Following the trends of the times, development environments have transformed from tools for increasing programmer productivity into means of supporting all stages of collective work on a software project. The latest trend is the transformation of IDE into ALM (application lifecycle management), an integrated application lifecycle management system - from requirements definition and modeling to configuration and software version management, deployment and maintenance of the finished solution.

Each new stage in the evolution of IDEs has made development environments more complex. However, users of such products were still forced to resort to tools not integrated into the IDE, if only because creating an application is not limited to writing and debugging programs in a single programming language. The need to use, for example, HTML pages, relational database schemas, or pieces of code in other languages ​​(like Cobol or PL/1) in the application system forces developers to use the appropriate tools that were not originally included in the IDE.

This is why many commercial development environment vendors strive to make them as open as possible and provide special mechanisms for integrating external tools. But no single environment can satisfy all possible user requirements. To do this, it must be completely neutral to the programming language and support the maximum set of functions. Eclipse is not such an environment, but it is a base, a platform with which you can build multifunctional and multilingual development environments.

Platform

As the initiators of the Eclipse project explain, its idea was to create “Apache for development tools” - an open platform that provides maximum basic capabilities for development environments and provides mechanisms for integrating various tools. The first version of this platform was developed by IBM and released in open source at the end of 2001. Commercial implementations based on Eclipse soon began to emerge, pioneered by WebSphere Studio Application Developer 4.0. There is now an entire open source development ecosystem around Eclipse, bringing together vendors and users of tools, research organizations and individual developers.

In the official Eclipse Foundation docs ( www.eclipse.org The Eclipse Platform is defined as a vendor-neutral, open development platform that provides framework and exemplary capabilities as well as extensible tools. The toolkit within the Eclipse Platform is standard in the sense that it verifies the applicability of the basic capabilities of the platform, illustrates typical situations of their use, and supports the development and maintenance of the Eclipse platform itself. The toolkit is extensible because its functionality is accessible through documented software interfaces. The basic principles that guided the creators of the Eclipse Platform and according to which it continues to develop are as follows:

  • support for the construction of application development tools;
  • support for an unlimited number of tool vendors, including independent software developers;
  • support for tools for working with arbitrary content types, including HTML, Java, C, JavaServer Pages, EJB, XML, GIF, etc.;
  • ensuring “seamless” integration of tools for working with various types content different manufacturers;
  • support for application development environments with regular and graphical user interfaces;
  • providing the ability to run a development environment based on different operating systems (today, Eclipse-based tools are implemented for Linux, HP-UX, IBM AIX, Sun Solaris, QNX, Mac OS X, Windows);
  • taking into account the popularity of the Java language when creating development tools in the interests of platform development.

The Eclipse Platform is a development environment written in Java for general purpose, the architecture of which provides the integration of various tools and programming languages ​​to solve various problems. Mechanisms of such integration allow you to use the Eclipse Platform to build advanced development environments, freeing you from the routine of writing basic tools in favor of creating complex, specialized functions. This not only solves the problem of supporting multifunctional and multilingual development environments, but also lays the foundation for simplifying the transition from one type of environment to another in the process of their evolution. Developed by a community of developers, the Eclipse platform will accumulate the latest advances, making them available to developers of specific products and eliminating the need to fundamentally redesign their systems.

Eclipse development environment

The basis of the Eclipse Platform architecture is the principle of using plug-ins. The platform implements mechanisms for detecting, integrating and executing such modules (see figure). A developer who wants to take advantage of the capabilities of the Eclipse Platform writes his toolkit in Java as a separate plug-in module. This module will work with files in a workspace, which is implemented using the workspace component. And its user interface is based on the workbench component, which defines the general structure of the interface and the possibility of its expansion.

Typically, a single plug-in implements the simplest functionality of an Eclipse Platform-based IDE, while more complex tools are composed of multiple modules. At the same time, almost all the built-in functionality of the Eclipse Platform is also implemented using such modules - with the exception of the small Platform Runtime kernel. Each plug-in module has its own manifest file, which describes the connections of this module with others. When you start an Eclipse Platform-based development environment, the Platform Runtime component determines the set of available plug-ins, reads their manifest files, and builds a plug-in registry. Once the system has started, additional modules can no longer be added. The Eclipse project has implemented a special environment for creating plug-ins - Plug-In Development Environment (PDE).

Using special modules, the components of the workspace and user interface (workbench) of the Eclipse platform are implemented. The workspace contains files that are created by users of tools implemented by plug-ins. The workbench component provides a general structure and tools that allow you to expand the capabilities of the user interface of the development environment based on the Eclipse Platform, and includes two components for implementing tools for providing information to the user.

  • Standard Widget Toolkit (SWT) is a set of interface elements and a graphics library that have mechanisms for integration with the window system of a specific operating platform, but implement APIs that are independent of the OS. This makes it possible to build user interfaces of the development environment according to uniform principles, which correspond to the window environment familiar to the consumer, but are intended for the widest possible range of operating systems;
  • JFace is a toolkit for implementing a number of common tasks related to programming interfaces using SWT tools.

Based on the APIs provided by the SWT and JFace components, a personalized user interface is built that determines the structure of consumer interaction with the development tools. The Eclipse Platform interface is organized using editors, views, and perspectives.

The purpose of editors is to open, edit and save workspace objects. The platform has a built-in editor for text resources, and other features must be implemented as plug-ins. Views provide information about the object the user is working with this moment. Finally, the perspective engine allows you to select and organize the desired editors and views that will be displayed on the screen.

Organization

There are a number of benefits to running open source projects. Thus, one of the tasks of such a platform is to provide developers with tools from a common base, invariant for different development environments. Why does every manufacturer need to re-write something that can be written once? But in order to build their developments on such a platform, the manufacturer must completely trust the one who created it. And this is only possible if he is able to try out everything that is included in it, that is, get an open source platform.

Developing a product in accordance with Open Source principles improves the quality of the code, since it is polished together by many interested developers. Debugging becomes easier and better - thanks to access to the source code of the program and, again, the involvement of a distributed team in the work. Collaborative work allows us to share the risks of creating complex technologies. And the collective development body of the platform ensures its support regardless of the vicissitudes that may occur with suppliers of specific development environments. Finally, using an open source development platform with a flexible plug-in mechanism to implement additional functionality opens up unlimited possibilities for its improvement.

Eclipse Platform Architecture

However, it will not be possible to realize the benefits of the open source development model by simply releasing a technical platform “free-floating.” We need to organize the process. With the release of the first version of Eclipse in 2001, a consortium organized by IBM along with a number of leading market players took on this responsibility, and in February 2004, the Eclipse Board of Directors decided to transform the Eclipse Foundation into a non-profit, independent corporation.

The Eclipse Foundation, a consortium of more than 60 companies, coordinates efforts to improve the Eclipse platform and other open source projects.

The Eclipse project is completely open and any interested developer can participate in it, who does not have to be an employee of any company. In principle, everyone can not only be interested in the details of development and contribute to identifying errors, but also take part in writing code and the overall design of the next version of the platform. However, Eclipse follows the principle of putting professionalism first. A developer with a proven professional reputation can count on additional responsibility and the opportunity to actively implement their skills in Eclipse projects. Some developers are defined as “committers” because they are responsible for the source code and only they have the right to create new versions in the open source code repository. Typically, these developers are employees of companies that pay them for their work on Eclipse projects.

The development process is iterative, aimed at maximizing the involvement of members of the Eclipse community in working on the project. The release of the next release is preceded by several stages of a fixed duration (about several weeks), each of which represents a complete cycle, including planning, development, testing and intermediate release of the version. The completion of the next cycle is accompanied by an open publication of a description of the new capabilities of the system, which stimulates community members to discuss, use and make recommendations for improvement. As a result, in the next stages of development it becomes possible to take into account the community's reaction to the interim release. This is an open process to continuously improve the Eclipse platform and develop other initiatives based on it.

The mission of the Eclipse technology project is to coordinate the efforts of developers, researchers, members of scientific and educational organizations to determine the prospects for the Eclipse Platform and other open source developments. Some of the most notable research subprojects in this area include the development of aspect-oriented software (AspectJ and AJDT), the creation of an alternative kernel to the Eclipse Runtime (Equinox), the creation of a collaborative development platform (Koi), software configuration management (Stellation), toolkit for XML Schema Definition and for model-based development (Generative Model Transformer).

Community

Use of all materials generated by Eclipse projects is subject to the Common Public License (CPL) as approved by the Open Source Initiative. Under the CPL, anyone can use and redistribute Eclipse free of charge for commercial and non-commercial purposes. The following are freely available on eclipse.org:

  • current versions of the Eclipse Platform for direct use (in binary form);
  • a source code repository in which anyone can view the contents and revision history of any source file, as well as obtain scripts for recompiling and building the Eclipse platform from source codes;
  • open discussion forums to discuss the Eclipse Platform;
  • bug database to track defects and issues in current versions of the platform. Using this database, users can identify known defects in their Eclipse-based developments and publish new problems they discover;
  • development plans and contacts for developers involved in Eclipse projects.

Today on eclipse.org freely available - more than a hundred plug-ins in source code for the Eclipse platform. Eclipse's open source projects total more than 2 million lines of code.

Key to market development software development has participation in the Eclipse project of commercial companies. With the Eclipse Platform, they have pre-built core development environment services that are language- and operating-platform-neutral and can focus their efforts and investments on developing the complex functionality that will make their solutions competitive. There are examples of Eclipse-based implementations of both full-featured development environments that promote the most advanced solutions in this area, as well as specialized tools aimed at a specific range of tasks.

Thus, all products of the IBM Rational family run on the Eclipse platform. Borland intends to migrate all of its support tools to Eclipse life cycle applications. There is an Eclipse version of QNX's embedded application development tools; Wind River is implementing a similar project. In turn, Hewlett-Packard offers an Eclipse-based component development environment for its Internet Usage Manager system, target audience which are telecom operators. Nokia announced support for Eclipse as a development platform mobile applications. IBM has implemented a special toolkit, Autonomic Computing Toolkit, based on Eclipse, designed to support autonomous computing technologies in developed applications. Of all the world's leading software manufacturers, only Sun Microsystems and Microsoft do not cooperate with the Eclipse Foundation.

Vendors of commercial Eclipse-based environments allow independent development companies to sell plug-ins for their IDE, and it is common for a company to sell the same proprietary plug-in for different Eclipse-based environments. This is not only a method of developing new markets, but also another way to increase the significance of the project. Users value freedom of choice: if they are not satisfied with the existing functionality of an environment based on an open source platform, they can expand it through self-development or by purchasing commercial solutions of the same format.

These groups use Eclipse developments in different ways, but they all contribute to their development. The trend is to use the Eclipse platform to build non-IDE applications. This is possible because there are not many development environment-specific elements in the Eclipse Platform technology solution. In the third version of Eclipse, there is an evolution from a platform for development environments to a platform for implementing full-featured client workstations (Rich Client Platform). It is no coincidence that IBM implements its promising Workplace collaboration environment based on Eclipse.

Literature

  1. Marc R. Erickson, Angus McIntyre. , 2001, November.
  2. J. dea Rivieres, J. Wiegand. Eclipse. A platform for integrating development tools. IBM Systems Journal, 2004, No. 2.

Eclipse Organization Structure

Coordination of Eclipse development and participation in open source projects of various organizations and individual developers is carried out by the non-profit independent consortium Eclipse Foundation

The Eclipse Foundation Board of Directors is composed of four main categories of members:

  • strategic developers (Strategic Developers) - companies Actuate, Borland, IBM, Computer Associates, Intel, QNX, Wind River, Sybase, Scapa Technologies, BEA Systems;
  • strategic consumers (Strategic Consumers) - HP, Montavista Software, SAP, Serena Software;
  • included suppliers (Add-in Providers);
  • Open Source project leads.

All strategic developers and strategic consumers are on the board of directors, and the other two groups delegate their representatives to it. Strategic members of the consortium also have certain rights to participate in project management committees and Councils that coordinate development processes.

The consortium runs several basic open source projects, which include a varying number of subprojects. The base project is managed by the Project Management Committee (PMC). To manage the development as a whole, three main councils are created - the Requirements Council, the Architecture Council and the Planning Council.

The Requirements Board analyzes and structures project requirements. They combine requirements aimed at achieving the general goals of the Eclipse Foundation and the specific goals of the project, solving the problems of key consortium members and developing the Eclipse ecosystem. Based on the analysis, a list of topics and priorities is formulated that will determine the course of development. The Architecture Board is responsible for developing the architecture of the Eclipse Platform, defining it clearly, communicating it to development teams, and protecting them from inadvertent misrepresentation. The Planning Council creates a coordinated platform release plan.

Projects are implemented by development teams led by project managers and including developers and responsible developers. The former are engaged in writing code, identifying errors, testing and documenting programs, and also perform other tasks within the framework of the project. Responsible developers have the right to add to the source code repository and must influence the progress of development within the project. Companies designated as Strategic Developers by the Eclipse Foundation are required to lead at least one project. They are also encouraged to lead committees.

EclipseIDE 4.5.2 is a free integrated software development environment. The IDE differs from other IDEs in that it is open source. Intended primarily for developers in Java, C/C++ and PHP languages.

Today on the Internet you can find a huge number of different text editors with code highlighting. They are free, and in principle, they cope with the function of writing code, but IDEs are a completely different matter. It has a compiler, which simple text editors cannot boast of, as well as the ability to integrate with version control systems for team development of projects.

Description of the Eclipse IDE

The most popular and priority direction for Eclipse IDE developers was programming in the Java language. At the beginning, Eclipse was developed by the well-known company IBM and, at that time, this IDE was not free. But soon, all the developments were transferred to the Eclipse Foundation community, which is still developing this software product.

As mentioned above, Eclipse IDE has integration with various systems version control, which allows the development team to work on the project, and also have all versions of the software available.

Eclipse IDE is a modular system. Since it was first developed exclusively for JAVA, the need arose for additional modules and extensions that would allow it to support other programming languages. At the moment, there are many such extensions, both paid and freely available.

Despite its free distribution, the Eclipse IDE is the main development environment for most JAVA programmers. Recently, it has become even more loved since a module was released that allows you to develop applications for Android.

Java is a high-level programming language that was developed by Sun Microsystems back in 1995. Today, the company JCP (Java Community Process) is developing this technology. One of the main features of the language is compilation, which is performed directly when the program is assembled.

The code is turned into bytecode and then executed in virtual machine Java. The JVM acts as a translator that connects the programming language with the necessary computer components. This principle allows programs to run on any system where a virtual machine is installed.

Features of the programming language

Java is an object-oriented and typed language with many useful features for developers. Among them are the following:

  • Easy to learn. Basic knowledge of object-oriented programming will be enough to comfortably master the language.
  • Object-oriented methodology. Programs consist of objects that can be easily expanded and adapted to achieve your goals.
  • Safety. Public key encryption provides best practices authentication.
  • Platform-independent. Programs written in the language are compiled into bytecode, which can run on absolutely any platform of modern operating systems.
  • Portability. The programming language is independent of the implemented aspects of the specifications.
  • Strength. The Java machine is able to cope with many errors due to the development company's focus and emphasis on constant checking and reducing the time costs incurred during compilation.

Besides, given language quite common, as it is characterized as multi-threaded, high-performance, interpreted and dynamic.

Features of Java Software Platforms

There are several implementations of this platform, among which Eclipse occupies a special place. The development environment for modular cross-platform applications has a number of mandatory features that are also present in other similar products. Among them are:

  • Common technologies for deploying programs in the user environment.
  • Tools for creating graphical interfaces of any complexity.
  • Libraries for remote control objects and software access to the data.
  • Tools for launching, debugging, compiling, monitoring and other actions with applications.

What is Eclipse?

Eclipse is a development environment currently controlled by the Eclipse Foundation. It is open source, which provides new opportunities for developers. It is written in Java and is intended to improve the software creation process.

This project is an infrastructure that provides basic services important to developers. Available tools allow you to create new technologies in Eclipse. The development environment is not just a collection of APIs - it can handle full-fledged tasks.

A huge number of plugins with open source source code provides unlimited possibilities for toolkit developers. Any additions can be added to the program, which will ultimately allow you to customize and adapt it to any task.

Platform Features

The programming environment has the following features:

  • A wide API assembly for adding new modules, as well as a framework for programming any extensions.
  • Supports all popular operating systems.
  • Eclipse, the development environment, allows programming in most known languages. C sharp (C#), Java, PHP, C, Python, C++ and many other languages ​​are supported by this program.
  • RCP technology is available, the capabilities of which will be sufficient to develop client software of any complexity and scale.
  • The modularity of the program provides incredible convenience and flexibility in operation.

The Eclipse project continues to evolve in many directions. The program is constantly improving, expanding its functionality by adding new plugins.

Platform architecture

The programming environment consists of several basic elements. Firstly, this is the Eclipse Runtime, which is responsible for running modules and plugins. This execution environment includes basic functionality. This includes managing updates, interacting with the system, configuring plugins, and maintaining the functionality of the help section.

Secondly, this is the IDE itself, which is responsible for managing projects, leading program elements, as well as debugging, team development and searching among files.

Plugins such as PDE and Java Development Tools are also included in Eclipse. The development environment for Java programs and new add-ons using these plugins becomes much more functional.

Examples of other specialized assemblies

The above Eclipse SDK is one version of the platform. There are several more IDE builds available with unique features, namely:

  • For Java EE Developers. The version is intended for programming corporate or web applications using Java EE.
  • For JavaScript Web Developers. Assembly for creating web products with using CSS, XML, HTML and JavaScript.
  • For Java Developers. Java programming version.
  • For C/C++ Developers. Assembly for programming in C++ and C languages.

Each version has unique features, but the basic functionality for beginners is fully provided by the standard Eclipse (development environment). Lessons on it are available online for free, which will greatly simplify learning the program.

Competing Products

This development environment has many competitors, but it is impossible to finally choose the best representative. Eclipse can confidently be considered the most popular. Almost all developers used it, thanks to a number of undeniable advantages.

When developing mobile applications, Eclipse (development environment) is often used. The Android platform is developing rapidly, and the support for the Java language in this IDE attracts developers. However, it is worth noting that its capabilities are much greater.

The main competitor of the program in question is the NetBeans product, and it is completely free. You have to pay for an Eclipse license, and this puts some people off. Other competing products include IntelliJ IDEA, JDeveloper, Android Studio, DrJava and MyEclipse. But many consider Eclipse to be the best. The development environment has been pleasing users for many years and continues to do so!

IT technologies do not stand still; they are developing every day. New programming languages ​​are being created that allow us to use all the capabilities that a computer gives us. One of the most flexible, powerful and interesting languages ​​is Java. To work with Java you need to have a software development environment. We'll look at Eclipse.

Eclipse is an extensible integrated development environment that is freely available. It is Eclipse that is the main competitor to IntelliJ IDEA and the question: “Which is better?” still remains open. Eclipse is a powerful IDE that is used by many Java and Android developers to write various applications for any OS.

Attention!
Eclipse requires a lot of additional files, latest versions which you can download from the official Java website. Without them, Eclipse won't even start the installation.

Of course, Eclipse is designed for writing programs. After creating the project, you can enter the program code in the text editor. If errors occur, the compiler will issue a warning, highlight the line where the error was made, and explain its cause. But the compiler will not be able to detect logical errors, that is, condition errors (incorrect formulas, calculations).

Setting up your environment

The main difference between Eclipse and IntelliJ IDEA is that you can customize the environment completely to suit you. You can install additional plugins on Eclipse, change hotkeys, customize the work window, and much more. There are sites where official and user-developed add-ons are collected and where you can download them all for free. This is definitely a plus.

Documentation

Eclipse has a very comprehensive and easy to use online help system. You will find many tutorials that you can use when starting to work in the environment or if you have any difficulties. In the help you will find all the information about any Eclipse tool and a variety of step by step instructions. One “but” - all this is in English.

Advantages

1. Cross-platform;
2. Ability to install add-ons and configure the environment;
3. Speed ​​of execution;
4. Convenient and intuitive interface.

Flaws

1. High consumption of system resources;
2. Requires many additional files for installation.

Eclipse is an excellent, powerful development environment that is distinguished by its flexibility and convenience. It is suitable for both beginners in the field of programming and experienced developers. With this IDE you can create projects of any size and any complexity.

- free framework for developing modular cross-platform applications.

The project was initially developed in IBM as a corporate IDE standard for development on different languages for IBM platforms. The project was then renamed and provided to the community for further development.

First of all, complete Java IDE, aimed at group development, equipped with tools for working with version control systems (CVS support is included in the Eclipse distribution, several versions of SVN modules are actively being developed, there is support for VSS and others). Due to free In many organizations, Eclipse is the corporate standard for application development.

Second appointment- serve as a platform for developing new extensions (which is why it has gained popularity - any developer can expand Eclipse with his own modules). So they became C/C++ Development Tools(CDT), developed by QNX engineers together with IBM, COBOL, FORTRAN, PHP tools from various developers. Many extensions complement Eclipse with managers for working with databases, application servers, etc.

Since version 3.0, Eclipse has become a collection of extensions rather than a monolithic IDE that supports extensions. It is based on the OSGi and SWT/JFace framework, on the basis of which the next layer has been developed - a platform for developing full-fledged client applications RCP (Rich Client Platform - (English rich-client applications). The RCP platform serves as the basis for RCP applications such as Azareus and File Arranger.The next layer is the Eclipse platform, which is a set of RCP extensions - editors, panels, perspectives, the CVS module and the Java Development Tools (JDT) module.

Written on Java, therefore it is a platform-independent product, with the exception of the SWT library, which is developed for all common platforms. The SWT library is used instead of the "slow" Swing and is completely dependent on the underlying platform ( operating system), which ensures fast and natural appearance user interface.

The basis of Eclipse is the rich client platform (RCP). It consists of the following components:


  • OSGi (standard package delivery environment);
  • SWT (portable widget toolkit);
  • JFace (file buffers, working with text, );
  • Eclipse work environment (panels, editors, projections, wizards).
  • The GUI is written using the SWT toolkit. The latter, unlike Swing (which only emulates individual graphical elements of the platform used), actually uses graphic components of this system. The Eclipse user interface also depends on a GUI middleware called JFace, which makes it easy to build an SWT-based user interface.

    Flexibility is ensured by plug-ins, which makes it possible to develop not only in Java, but also in other languages, such as C/C++, Perl, Ruby, Python, PHP, ErLang and others.

    Localization

    Since version 3.1.1, a language pack for Russification has been released. Both the graphical interface and documentation have been translated into Russian.

    There are a number of free and commercial modules available for the environment. The framework was originally developed for the Java language, but there are now numerous extensions to support other languages, such as

    • C/C++ - CDT Eclipse’s C/C++ Development Tooling
    • Perl - EPIC module, Eclipse Perl Integration
    • PHP - PDT PHP Development Tools
    • JavaScript - JSEclipse Javascript plugin for the Eclipse environment
    • Python - Pydev, Python Development Environment
    • Ruby - RDT, Ruby Development Tools

    There are also modules for creating graphical interfaces.

    To develop and receive reports and develop analytical BI applications, there is en:BIRT_Projec t.

    There is a built-in function for installing and updating modules via .

    Aptana(aptana.com) - Eclipse distribution and plugin that supports development with using JavaScript(all main JS Ajax libraries are included in the distribution), HTML, CSS, Ruby on rails, Adobe AIR.

    Leave your comment!