< browse all profiles
skill profile

Java

People who contributed to profile creation

9

Contributors
Give us a feedback
Community

11

Subscribers
Subscribe for news

Description

Java is amongst the most popular programming languages used with a striking nine million engineers. So if you Java Engineer it looks like you are doing something ineresting ;)

Skills

General Knowledge

Expand/colapse
How does the internet works, how the Web works. Difference betwen a web page, a web site, a web server and search engine. Understanding domain names. Understanding development processes, main programming paradigms, understanding of how works secondary languages, for Python engineers nice to know (JS, HTML, CSS) etc.

OOP

‍Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code: data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods). Also this is the place to talk about Modularization, Packages etc.

‍Functional Programming

‍Functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program.

‍Web Security Knowledge

‍Website security is the act/practice of protecting websites from unauthorised access, use, modification, destruction, or disruption (important principles of modern web security, security best practices, Content Security Policy, CORS, OWASP Security Risks). GDPR, hashing, encryption, SSL topics can be covered here as well.

‍HTML

‍HTML (Hypertext Markup Language) is the code that is used to structure a web page and its content. For example, content could be structured within a set of paragraphs, a list of bulleted points, or using images and data tables.

‍CSS

‍CSS (Cascading Style Sheets) is the language used to style an HTML document. CSS describes how HTML elements should be displayed.

‍JavaScript

‍TypeScript, OOP in JavaScript, one of the main JS Frameworks (React/Angular/Vue)

‍Authorization and Autentification

‍Talking about Authorization and Autentification means to be knowledgeable about Cookies, Session, JWT, Token, OAuth. In simple terms, authentication is the process of verifying who a user is, while authorization is the process of verifying what they have access to. Being a Java engineer you suppose to know such stuff as Spring Security, JEE Security, etc.

‍GraphQL

‍GraphQL is a query language for your API, and a server-side runtime for executing queries using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data. GraphQL Best Practices (HTTP, JSON, Versioning, Nullability, Pagination, Server-side Batching and Caching)

‍Data formats and Communication

‍JSON, YAML, XML (dom/sax/xpath), validation. For advance level is nice to know about schema evolution, about data serilization systems, platforms, frameworks, libraries, binary protocols - (Protobuf/Thrift, Kryo, Avro, Parquet)

‍Operating Systems

‍Unix Compatible, Linux (Debian/Ubuntu, CentOS/RHEL), MS Windows, Mac OS X

‍OOD Concepts and Principles

‍Object-oriented design (OOD) is the process of using an object-oriented methodology to design a computing system or application. OOD Concepts: Coupling, Cohesion, Strong Encapsulation. OOD Principles: DRY, KISS, YAGNI, SOLID are software design principles, they are about clean code.

‍SDLC and Methodologies

‍Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop and test high-quality software. The SDLC aims to produce high-quality software that meets or exceeds customer expectations, reaches completion within times and cost estimates. There are a few of the most popular methodologies such as Scrum, Kanban, Waterfall, XP, but you can find another one or a mix of those.

No items found.

Networking

Expand/colapse
A computer network is a set of devices connected through links. A node can be a computer, printer, or any other device capable of sending or receiving the data. The links connecting the nodes are known as communication channels.

OSI Model

‍The Open Systems Interconnection (OSI) model describes seven layers that computer systems use to communicate over a network.

‍IP (address, masks, type of networks, etc.)

‍IP address is the host identification number used for proper communication between devices. The IP address is a number assigned to a network interface, a group of interfaces (broadcast, multicast addresses) or to the entire computer network, used to identify network components and being one of the elements enabling them to communicate.

‍Knowledge of common protocols

‍Network protocols are a set of rules, conventions, and data structures that dictate how devices exchange data across networks. In other words, network protocols can be equated to languages that two devices must understand for seamless communication of information, regardless of their infrastructure and design disparities.(DHCP, DNS, SSH, TCP/UDP, NTP, LDAP)

‍VLAN

‍Short for virtual local area network, VLAN allows a network administrator to set up separate networks by configuring a network device, such as a router, without adjusting cabling. A VLAN allows a network to be divided, set up, and changed by a network administrator to organize and filter data accordingly.

‍Protocols (HTTP, HTTPS, HTTP2)

‍Protocol - a set of rules or procedures for transmitting data between two or more entities of a communications system.

‍Browsers (how do they works with APIs)

‍A web browser (commonly referred to as a browser) is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. Although browsers are primarily intended to use the World Wide Web, they can also be used to access information provided by web servers in private networks or files in file systems. (Render, parsing, optimization etc.)

No items found.

Data and Database

Expand/colapse
A database is an organized collection of data, generally stored and accessed electronically from a computer system.

Relational DB

‍A relational database is a type of database. It uses a structure that allows us to identify and access data in relation to another piece of data in the database. Often, data in a relational database is organized into tables. There are most popular of them β€” SQL Server, PostgreSQL, MariaDB, MySQL, SQLite, Oracle, etc.

‍NoSQL

‍A NoSQL (originally referring to "non-SQL" or "non-relational") database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Talking about NoSQL DB is nice to know about CAP/PACELC, Key-value, document-oriented, column-oriented, map-reduce, graph-db, real-time, multi-model. The are plenty of NoSQL DBs and management systems: MongoDB, Redis, LiteDB, Apache Cassandra, RavenDB, CouchDB, etc.

‍ORM & Persistence

‍ORMs stand for Object-Relational mapping, most popular are β€” Hibernate, Eclipse Link, Apache OpenJPA, etc. But happens that engineers don't use ORMs but use instead of that query builder. Data Persistence is a means for an application to persist and retrieve information from a non-volatile storage system. There are many ways to make data persist in Java.

‍Cloud Database

‍A cloud database is a database that typically runs on a cloud computing platform and access to the database is provided as-a-service. Depends of the cloud could be different databases: Azure CosmosDB, Amazon DynamoDB etc.

‍Search Engines

‍A powerful search engine behind your database helps the customers in better finding. Here is nice to know ElasticSearch, Solr, Β Lucene, Indexing/Tokenization, Indexes, Ranking, Heavy Load, etc.

‍ACID

‍Set of properties that a database transaction in a relational database is supposed to have (Atomicity, Consistency, Isolation, Durability)

‍Transactions

‍A transaction can be defined as a group of tasks. A single task is the minimum processing unit which cannot be divided further.

‍N+1 Problem

‍The N+1 query problem happens when your code executes N additional query statements to fetch the same data that could have been retrieved when executing the primary query.

‍Database Normalization

‍Database normalization is the process of structuring a database, usually a relational database, in accordance with a series of so-called normal forms in order to reduce data redundancy and improve data integrity. It was first proposed by Edgar F. Codd as part of his relational model.

‍Indexes and how they work

‍A database index is a data structure that improves the speed of data retrieval operations on a database table at the cost of additional writes and storage space to maintain the index data structure.

‍DB design

‍This skill is nice to have while working with high-loaded RDBMS. DB design means you know how to read, write optimizations, aware of Scalability, partitioning replication, indexing, and other stuff.

No items found.

Java core knowledge

Expand/colapse
For sure there are much more things Java includes than listed here. These sections include probably the most important skills Java engineers need to have and know.

Java Syntax

‍When we consider a Java program, it can be defined as a collection of objects that communicate via invoking each other's methods. You need to know what do class, object, methods, instance variables mean, and many other basic things.

‍Collection framework

‍The Collection in Java is a framework that provides an architecture to store and manipulate a group of objects. Java Collections can achieve all the operations that you perform on data such as searching, sorting, insertion, manipulation, and deletion. Java Collection means a single unit of objects. Java Collection framework provides many interfaces (Set, List, Queue, Deque) and classes (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet).

‍Exception handling

‍An exception is an unwanted or unexpected event, which occurs during the execution of a program i.e at run time, that disrupts the normal flow of the program’s instructions. You need a Robust Programming, which takes care of exceptional situations. Such code is known as Exception Handler.

‍Java I/O

‍Java I/O (Input and Output) is used to process the input and produce the output. Java uses the concept of a stream to make I/O operation fast. The java.io package contains nearly every class you might ever need to perform input and output (I/O) in Java. All these streams represent an input source and an output destination. The stream in the java.io package supports many data such as primitives, object, localized characters, etc.

‍Java versions

‍Java is extremely backwards compatible. This means that your Java 5 or 8 program is guaranteed to run with a Java 8-13 Virtual Machine β€” with a few exceptions you don’t need to worry about for now. It obviously does not work the other way around, say your program relies on Java 13 features that are simply not available under a Java 8 JVM.

‍Concurrency / Multithreading Programming

‍Java Concurrency is a term that covers multithreading, concurrency and parallelism on the Java platform. That includes the Java concurrency tools, problems and solutions. This Java concurrency tutorial covers the core concepts of multithreading, concurrency constructs, concurrency problems, costs, benefits related to multithreading in Java.

‍Caching

‍A cache is a memory buffer used to temporarily store frequently accessed data. It improves performance since data does not have to be retrieved again from the original source. Caching is actually a concept that has been applied in various areas of the computer/networking industry for quite some time, so there are different ways of implementing cache depending upon the use case.

‍JVM

‍JVM (Java Virtual Machine) is an abstract machine. It is a specification that provides runtime environment in which java bytecode can be executed. JVMs are available for many hardware and software platforms (i.e. JVM is platform dependent).

No items found.

Spring

Expand/colapse
Spring framework is an open-source Java platform. It was initially written by Rod Johnson and was first released under the Apache 2.0 license in June 2003. The core features of the Spring Framework can be used in developing any Java application, but there are extensions for building web applications on top of the Java EE platform. Spring framework targets to make J2EE development easier to use and promotes good programming practices by enabling a POJO-based programming model.

Spring Core

‍The Spring framework comprises many modules such as core, beans, context, expression language, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet, Struts, etc. These modules are grouped into Test, Core Container, AOP, Aspects, Instrumentation, Data Access / Integration, Web (MVC / Remoting) as displayed in the following diagram.

‍Spring Boot

‍Spring Boot is an open-source Java-based framework used to create a micro Service. It is developed by the Pivotal Team and is used to build stand-alone and production-ready spring applications.

No items found.

Desktop, Frontend, Enterprise, Mobile

Expand/colapse
SUN Microsystem (now Oracle corp.) divided Java concepts into four categories for easy maintenance and easy distribution to all types of domains like mobile, desktop, and internet applications.

JavaFX

‍JavaFX is a Java library that is used to develop Desktop applications as well as Rich Internet Applications (RIA). The applications built in JavaFX can run on multiple platforms including Web, Mobile, and Desktops.

‍Swing

‍Swing in java is part of the Java foundation class which is lightweight and platform-independent. It is used for creating window-based applications. It includes components like button, scroll bar, text field, etc. Putting together all these components makes a graphical user interface.

‍AWT (Abstract Window Toolkit)

‍Java AWT (Abstract Window Toolkit) is an API to develop Graphical User Interface (GUI) or windows-based applications in Java. Java AWT components are platform-dependent i.e. components are displayed according to the view of the operating system. AWT is heavyweight i.e. its components are using the resources of the underlying operating system (OS).

‍SWT (Standard Widget Toolkit)

‍SWT is the software component that delivers native widget functionality for the Eclipse platform in an operating system-independent manner. Β It is analogous to AWT/Swing in Java with a difference - SWT uses a rich set of native widgets.

‍Play

‍Play is a high-productivity web application framework for programming languages whose code is compiled and run on the JVM, mainly Java and Scala. It integrates the components and APIs we need for modern web application development.

‍Java EE

‍The Java EE stands for Java Enterprise Edition, which was earlier known as J2EE and is currently known as Jakarta EE. It is a set of specifications wrapping around Java SE (Standard Edition). The Java EE provides a platform for developers with enterprise features such as distributed computing and web services. Java EE applications are usually run on reference run times such as microservers or application servers. Examples of some contexts where Java EE is used are e-commerce, accounting, banking information systems.

‍Java ME

‍The Java ME stands for Java Micro Edition. It is a development and deployment platform of portable code for embedded and mobile devices (sensors, gateways, mobile phones, printers, TV set-top boxes). It is based on object-oriented Java. The Java ME has a robust user interface, great security, built-in network protocols, and support for applications that can be downloaded dynamically. Applications which are developed on Java ME are portable and can run across various devices and can also leverage the native capabilities of the device.

No items found.

Testing and Code Quality

Expand/colapse
In the context of software engineering, software quality refers to two related but distinct notions: Software functional quality; Software structural quality.

Integration Testing

Integration testing is used to test a group of individual modules, components, or pieces of units. The main purpose of Integration testing is to find bugs when two or more modules are integrated. To check how two or more modules, components, or a different piece of code are will work together.‍

E2E Testing

‍Unlike unit testing, which focuses on individual modules and classes, end-to-end (e2e) testing covers the interaction of classes and modules at a more aggregate level - closer to the kind of interaction that end-users will have with the production system.

‍Unit testing

‍The main objective of unit testing is to isolate written code to test and determine if it works as intended. A unit test typically comprises three stages: plan, cases, and scripting, and the unit test itself.

‍Performance Metrics

‍Measuring performance provides an important metric to help you assess the success of your app, site, or web service. For example, you can use performance metrics to determine how your app performs in comparison to a competitor or you can compare your app's performance across releases. The metrics you choose to measure should be relevant to your users, site, and business goals. They should be collected and measured in a consistent manner and analyzed in a format that can be consumed and understood by non-technical stakeholders.

‍High load testing

‍Load testing is a great way to grab insights about how your application runs under heavy load, how all services interact, and to plan production capacity accordingly.

‍Test Automation

‍Test automation is the practice of running tests automatically, managing test data, and utilizing results to improve software quality. Automated testing is well-suited for large projects, projects that require testing the same areas over and over, and projects that have already been through an initial manual testing process.

‍Test Driven Development

β€œTest-driven development” refers to a style of programming in which three activities are tightly interwoven: coding, testing (in the form of writing unit tests) and design (in the form of refactoring).

‍BDD (Behavior-Driven Development)

‍In software engineering, behavior-driven development (BDD) is an agile software development process that encourages collaboration among developers, quality assurance testers, and customer representatives in a software project. BDD is an extension to the TDD concept, but instead of testing your code you are testing your product, and specifically that your product behaves as you desire it to.

No items found.

Dev tools

Expand/colapse
Development Tools help to accelerate the web development process. There are many front-end web development software that help you faster your development work.

Build Tools

‍Build tool is a program that automates the process of compiling, testing, packaging, and deploying source code in the most efficient manner. The most popular are Maven, Gradle, Ant.

‍JDK (Java Development Kit)

‍Java Development Kit (JDK) is a software development environment used for developing Java applications and applets. It includes the Java Runtime Environment (JRE), an interpreter/loader (Java), a compiler (javac), an archiver (jar), a documentation generator (Javadoc), and other tools needed in Java development.

‍IDEs

‍Java IDE (Integrated Development Environment) is a software application that enables users to write and debug Java programs more easily. Most IDEs have features such as syntax highlighting and code completion that helps users to code more easily. Usually, Java IDEs include a code editor, a compiler, a debugger, and an interpreter that the developer may access via a single graphical user interface. Java IDEs also provide language-specific elements such as Maven, Ant building tools, Junit, and TestNG for testing.

‍VCS (Version Control System)

‍Version control, also known as source control, is the practice of tracking and managing changes to software code. Version control systems are software tools that help software teams manage changes to source code over time. Few of the most popular β€” Git, Mercurial, SVN, etc.

‍Utility Libraries

‍There are useful libraries for day-to-day projects, for example logging libraries like Log4j, JSON parsing libraries like Jackson,etc.

‍Containers and container management

‍Containers are a form of operating system virtualization. A single container might be used to run anything from a small microservice or software process to a larger application. Inside a container are all the necessary executables, binary code, libraries, and configuration files. Compared to server or machine virtualization approaches, however, containers do not contain operating system images. This makes them more lightweight and portable, with significantly less overhead. In larger application deployments, multiple containers may be deployed as one or more container clusters. Such clusters might be managed by a container orchestrator such as Kubernetes.

‍CI/CD

‍CI (Continuous Integration) and CD (Continuous Delivery) are part of the DevOps culture in which you combine development and operational processes into a single and collaborative workflow to make sure the two teams are on the same page.There are many tools and prnciples within this scope of activity: Jenkins, CodeShip, TeamCity, CircleCI, GitLab, Travis, VSTS, etc.; Deployment strategies: Rolling, Blue-Green, Canarry deployments etc.

‍Monitoring tools

‍Monitoring a Java-based application’s performance is very significant. Performance problems in Java-based applications can have an impact on a business a lot. Troubleshooting inefficiencies requires implementing several monitoring techniques to track Java logs, metrics, infrastructure data, etc. For these needs the are many tools available on the market, just a list of a few of them: Β Zabbix, Nagios, Prometheus Monitoring, DataDog, NewRelic, Graphite/Graphana, SolarWinds AppOptics, LightStep, EJ Technologies, JProfiler, Pingdom Server Monitor. AWS CloudWatch, ELK; Google tracer, Istio; Request tracing (Sleuth, Zipkin, Euger), HaProxy, Nginx, ELB (CLB vs ALB, Β layer 4 vs 7), GLB, Eureka, Consul, Kubernetes Service Discovery.

No items found.

Cloud Platforms

Expand/colapse
A cloud platform refers to the operating system and hardware of a server in an Internet-based data center. It allows software and hardware products to co-exist remotely and at scale.

Amazon Web Services

‍AWS Lambda is an event-driven, serverless computing platform provided by Amazon as a part of Amazon Web Services. It is a computing service that runs code in response to events and automatically manages the computing resources required by that code. It was introduced in November 2014.

‍Microsoft Azure

‍Azure Functions is an event driven, compute-on-demand experience that extends the existing Azure application platform with capabilities to implement code triggered by events occurring in Azure or third party service as well as on-premises systems.

‍Google Cloud

‍Google Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions you write simple, single-purpose functions that are attached to events emitted from your cloud infrastructure and services.

‍IBM Cloud

‍IBM cloud computing is a set of cloud computing services for business offered by the information technology company IBM. IBM Cloud includes infrastructure as a service (IaaS), software as a service (SaaS) and platform as a service (PaaS) offered through public, private, and hybrid cloud delivery models, in addition to the components that make up those clouds.

‍SAP Cloud Platform

‍SAP Cloud Platform is a platform as a service developed by SAP SE for creating new applications or extending existing applications in a secure cloud computing environment managed by SAP. The SAP Cloud Platform integrates data and business processes.

‍Heroku

‍Heroku is a cloud platform as a service (PaaS) supporting several programming languages. One of the first cloud platforms, Heroku has been in development since June 2007, when it supported only the Ruby programming language, but now supports Java, Node.js, Scala, Clojure, Python, PHP, and Go.

‍OpenStack

‍OpenStack is a free, open standard cloud computing platform. It is mostly deployed as infrastructure-as-a-service (IaaS) in both public and private clouds where virtual servers and other resources are made available to users.

‍CloudStack

‍The CloudStackβ„’ platform is a complete software suite used to create Infrastructure as a Service (IaaS) clouds. Target customers include service providers and enterprises.

‍DigitalOcean

‍DigitalOcean is a cloud infrastructure provider that provides cloud computing services to business entities. It is used to scale by deploying DigitalOcean applications that run parallel across multiple cloud servers without compromising performance.

No items found.

Architecture

Expand/colapse
The software architecture of a system depicts the system’s organization or structure and provides an explanation of how it behaves. A system represents the collection of components that accomplish a specific function or set of functions. In other words, the software architecture provides a sturdy foundation on which software can be built.

Data Structure and Algorithms

‍Algorithm is a step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output. From the data structure point of view, following are some important categories of algorithms: Search; Sort; Insert; Update; Delete.

‍Serverless

‍Serverless is a cloud-native development model that allows developers to build and run applications without having to manage servers.

‍Design of High Availability and High Load applications

‍High availability architecture is an approach to defining the components, modules, or implementation of services of a system that ensures optimal operational performance, even at times of high loads. Although there are no fixed rules for implementing High Availability systems, there are generally a few good practices that one must follow so that you gain the most out of the least resources.

‍Design Patterns

‍Design patterns represent the best practices used by experienced object-oriented software developers. Design patterns are solutions to general problems that software developers faced during software development. These solutions were obtained by trial and error by numerous software developers over quite a substantial period of time. Few of them for example - Factory, Strategy, Observer, Middlewares, Singeltone, State.

‍AntiPatterns

‍Architecture AntiPatterns focus on the system-level and enterprise-level structure of applications and components. If design patterns are the good guys, then the anti-patterns are the bad guys. And sometimes a good guy can turn into a bad guy. This happens in Hollywood movies, but it also happens in software engineering.

‍REST, SOAP

‍REST and SOAP are 2 different approaches to online data transmission. Specifically, both define how to build application programming interfaces (APIs), which allow data to be communicated between web applications.

‍Microservices

‍The microservice architecture enables the rapid, frequent and reliable delivery of large, complex applications. It also enables an organization to evolve its technology stack.

‍Microservices communication techniques

‍Choosing the mode of communication is a fundamental decision that needs to be taken with great care. Services must handle requests from the application’s clients. Furthermore, services often collaborate to handle those requests. Consequently, they must use an inter-process communication protocol. This skill is about (Message-Broker (RabbitMQ, Apache Kafka, ActiveMQ, Azure Service Bus); Message-Bus (Distribus, BusMQ), etc.)

‍Event Driven applications

‍An Event-Driven Architecture for data and applications is a modern design approach centered around data that describes β€œevents” (i.e., something that just happened). Examples of events include the taking of measurement, the pressing of a button, or the swiping of a credit card. In an event-driven architecture, decoupled applications can asynchronously publish and subscribe to events via an event broker (modern messaging-oriented-middleware).

‍SOA (Service-Oriented Architecture)

‍Service-Oriented Architecture (SOA) is a stage in the evolution of application development and/or integration. It defines a way to make software components reusable using the interfaces.

‍DDD (Data Driven Development)

‍Data-driven development in software engineering accepts the central role that data in its primary form takes in the applications that software developers create.

No items found.
we are loading comments...
Join discussion
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.