{"id":9253,"date":"2020-07-12T12:54:44","date_gmt":"2020-07-12T12:54:44","guid":{"rendered":"http:\/\/35.222.201.173\/?p=9253"},"modified":"2024-08-29T16:17:02","modified_gmt":"2024-08-29T16:17:02","slug":"java-entwickler","status":"publish","type":"post","link":"https:\/\/staging.devsdata.com\/de\/java-entwickler\/","title":{"rendered":"Java Entwickler"},"content":{"rendered":"<section>\n<h1>Java Entwickler<\/h1>\n<p class=\"subtitle-fake-h3\">Tipps zur Einstellung von Java Engineers, Branchentrends, und wie man \u00e4ltere Java-Anwendungen wartet.<\/p>\n<p>\n    <style>`\n        .post-info {\n            display: flex;\n            flex-direction: row;\n            font-family: Montserrat;\n            font-style: normal;\n            font-weight: 500;\n            font-size: 16px;\n            line-height: 150%;\n            letter-spacing: 0.02em;\n            color: #6D7082;\n            \/*padding-top:32px;*\/\n        }\n\n        .info-container .post-info {\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n\n        .post-info-main {\n            width: 100%;\n            display: flex;\n            flex-wrap: wrap;\n            row-gap: 5px;\n            column-gap: 20px;\n            grid-template-rows: repeat(3, auto);\n            grid-template-columns: 60px max-content auto;\n            margin-bottom:12px;\n        }\n\n        .with-reviewer {\n            flex-wrap: wrap;\n            row-gap: 5px;\n        }\n\n        .author-name {\n            margin-bottom:4px;\n            grid-row-start: 2;\n            text-decoration: underline;\n            color:black !important;\n        }\n\n        .rank-math-breadcrumb {\n            margin-top:20px;\n            position: relative;\n            z-index: 1;\n        }\n\n        .rank-math-breadcrumb p {\n            margin: 0;\n            white-space: nowrap; \n            overflow: hidden;\n            text-overflow: ellipsis;\n            gap: 8px;\n            display: flex;\n        }\n\n        .rank-math-breadcrumb a {\n            color: #6d7082;\n        }\n\n        .rank-math-breadcrumb a:hover {\n            text-decoration: underline;\n            color: #0332c9;\n        }\n\n        .author-avatar {\n            display: flex;\n            justify-content: center;\n            margin-right: 15px;\n            width: fit-content;\n            grid-row-start: span 2;\n            grid-row-end: 4;\n        }\n\n        .author-avatar picture {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n        }\n\n        .author-avatar.clicked {\n            transform: scale(1.1);\n        }\n\n        .post-info .author-avatar img {\n            min-width:44px;\n            height: 44px;\n            width: auto;\n            object-fit: cover;\n            aspect-ratio: 1\/1;\n            filter: grayscale(1);\n            border-radius: 100%;\n            position: relative;\n            top: 2px;\n        }\n\n        .post-info .author_socials {\n            display: flex;\n            flex-direction: row;\n            align-items: center;\n            grid-row-start: 3;\n            grid-column: span 2;\n            gap: 15px;\n            list-style-type: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .post-info .author_socials li a {\n            display: flex;\n            align-item: center;\n            text-decoration: none;\n        }\n\n        .author_socials a svg {\n            width: 16px;\n            height: 16px;\n            transition: 0.3s;\n            color: #000;\n        }\n      \n        .author_socials li:hover svg {\n            color: #0332c9;\n        }\n\n        .right-info a {\n            width: fit-content;\n            color: unset;\n        }\n\n        .right-info a:hover {\n            text-decoration: underline;\n        }\n\n        .post-info .clock {\n            position: relative;\n            padding-right: 5px;\n            top: 2px;\n        }\n\n        .post-info .arrow {\n            position: relative;\n            margin-left: 10px;\n            margin-right: 10px;\n            transition: .2s;\n            height: 6px;\n            bottom: 1px;\n        }\n        .post-info .post-info-separator {\n            padding-right: 3px;\n            padding-left: 3px;\n        }\n\n        .reviewer-info {\n            display: flex;\n            flex-direction:column;\n            justify-content: center;\n            align-items: flex-start;\n            grid-row-start: 2;\n            align-self: start;\n            justify-self: end;\n            font-family: \"Montserrat\", arial;\n            color: #000;\n        }\n\n        .reviewer-info.the_first_row {\n            justify-self: start;\n            grid-row-start: 1;\n            grid-column: span 3;\n        }\n\n        .meta-checkmark {\n            width: 20px;\n            height: auto;\n        }\n\n        .reviewer-info a {\n            margin-left: 0;\n            color: #000;\n            text-decoration: underline;\n        }\n        .reviewer-info a:hover {\n            color: #0332c9;\n        }\n        .reviewer-info a:visited {\n            color: #551a8b;\n        }\n        .reviewer-info a:active {\n            color: #0332c9;\n        }\n        .language-dropdown-container {\n            display: inline-block;\n            width: 200px;\n        }\n\n        .language_switcher {\n            display: inline-flex;\n            align-items: center;\n            flex-direction: row;\n            gap: 5px;\n            vertical-align: middle;\n        }\n        \n        .language_switcher .wpml-ls-legacy-dropdown {\n            width: auto;\n            position: relative;\n            vertical-align: middle;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown ul {\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language {\n            position: relative;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language > a {\n            padding-left:16px !important;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu {\n            display: none;\n            position: absolute;\n            z-index: 10;\n            top: 100%;\n            left: 0;\n            width: 100%;\n            margin: 0;\n            background-color: rgb(238, 238, 238);\n            border-radius: 0 0 8px 8px;\n            overflow: hidden;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li {\n            display: block;\n            width: 100%;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li:hover {\n            background-color:rgba(204, 204, 211) !important\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu a {\n            display: block;\n            width: 100%;\n            padding: 8px 15px 8px 16px;\n            margin-left: 0;\n            box-sizing: border-box;\n            white-space: nowrap;\n            text-align: left;\n        }\n\n        @media (hover: hover) {\n            .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language:hover > .wpml-ls-sub-menu {\n                display: block;\n            }\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-sub-menu {\n            display: block;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > a.wpml-ls-item-toggle:after {\n            transform: scale(.7) rotate(180deg);\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-item-toggle {\n            border-radius: 8px 8px 0 0;\n            background-color: rgba(204, 204, 211);\n        }\n\n        .wpml-ls-legacy-dropdown a:focus {\n            background-color: #FFFFFF;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown a:visited {\n            color: #000000 !important;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:after {\n            content: \"\";\n            display: inline-block;\n            transform: scale(.7);\n            height: 20px;\n            width: 20px;\n            background: url(\"\/wp-content\/uploads\/2020\/07\/Vector.png\");\n            margin-left: 5px;\n            background-repeat: no-repeat;\n            background-position: center center;\n            background-size: 10px;\n            border: none;\n            position: unset;\n            background-color: #eee;\n            border-radius: 50%;\n            padding: 10px;\n            transition: transform 0.2s ease-in-out;\n            vertical-align: middle;\n            flex-shrink: 0;\n        }\n\n        .language_switcher a {\n            border: none;\n            padding: 10px 15px;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle {\n            padding: 0 5px 0 2px !important;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-sub-menu a.wpml-ls-link:hover,\n            .language_switcher .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:hover {\n                background-color: rgba(204, 204, 211);\n                color: #000000 !important;\n                text-decoration: none;\n            }\n        }\n\n        .wpml-ls-sub-menu {\n            border: none !important;\n            background-color: transparent;\n        }\n\n        .wpml-ls-sub-menu a {\n            background-color: #FFFFFF;\n        }\n\n        .wpml-ls-current-language .wpml-ls-item-toggle {\n            border-radius: 8px;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-current-language:hover .wpml-ls-sub-menu a {\n                background-color: rgb(238, 238, 238) !important;\n            }\n\n            .wpml-ls-current-language .wpml-ls-sub-menu a:hover,\n            a.wpml-ls-item-toggle:hover:after {\n                background-color: rgba(204, 204, 211) !important;\n            }\n\n            .wpml-ls-current-language:hover a.wpml-ls-item-toggle:after {\n                transform: scale(.7) rotate(180deg);\n            }\n\n            .wpml-ls-current-language:hover .language_switcher .wpml-ls-legacy-dropdown a {\n                background-color: rgba(109, 112, 130, 0.1);\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item-toggle{\n                border-radius: 8px 8px 0 0;\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item:last-child .wpml-ls-link{\n                border-radius: 0 0 8px 8px;\n            }\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-sub-menu a {\n            background-color: rgb(238, 238, 238) !important;\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-item:last-child .wpml-ls-link{\n            border-radius: 0 0 8px 8px;\n        }\n\n        ul.language-list {\n            \/*min-height: 71px;*\/\n            margin: 0;\n            overflow: hidden;\n            position: absolute;\n            display: inline-block;\n            list-style: none;\n            vertical-align: top;\n            background-color: #FFFFFF;\n            padding: 0;\n            z-index: 2;\n        }\n\n        ul.language-list.mobile {\n            border-radius: 10px;\n            border: 1px solid rgba(109, 112, 130, 0.1);\n            margin-left: 10px;\n        }\n\n        .language-list.mobile li:hover {\n            background-color: rgba(109, 112, 130, 0.1)\n        }\n\n        .language-list.mobile li:hover a {\n            color: #000000;\n        }\n\n        .dropdown-arrow {\n            display: inline-block;\n            border-radius: 50%;\n            height: 30px;\n            width: 30px;\n        }\n\n        .dropdown-arrow {\n            background-color: rgba(109, 112, 130, 0.1);\n        }\n\n        .dropdown-arrow:hover {\n            background-color: rgba(109, 112, 130, 0.3);\n        }\n\n        .dropdown-arrow.mobile,\n        .dropdown-arrow.mobile:hover {\n            background-color: unset;\n        }\n\n        .language-list li {\n            padding-left: 10px;\n            cursor: pointer;\n            display: none;\n        }\n\n        .language-list li a {\n            color: #6D7082;\n            text-decoration: none;\n        }\n\n        .language-list li:first-child {\n            display: block;\n        }\n\n        .active li {\n            display: block;\n        }\n\n        .rotated {\n            transform: rotate(180deg);\n            bottom: 2px !important;\n        }\n        .bookmark {\n            align-self: center;\n            cursor:pointer;\n            display:none;\n        }\n        \n        .article h1 + p,\n        .article h1 + p + p {\n            margin: 0;\n            margin-bottom: 0 !important;\n        }\n\n        .info-container{\n            \/*min-height:150px;*\/\n            direction: ltr;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n            padding-top: 20px;\n        }\n        .tags{\n            font-family: \"Montserrat\", sans-serif;\n            display: flex;\n            flex-direction: row;\n            justify-content: flex-start;\n            flex-wrap: wrap;\n            width: 100%;\n            overflow: hidden;\n            font-size: 14px;\n            border-radius: unset;\n            margin-bottom:20px;\n        }\n        .tags a {\n            font-style: normal;\n            line-height: 1.75em;\n            border: 0.5px solid #e2e5e9;\n            margin-right: 7px;\n            margin-top: 7px;\n            transition: 0.2s;\n            transition-property: background;\n            border-radius: 5px;\n            padding: 0.2em 0.8em;\n            color: black;\n        }\n        .tags a:hover {\n            background-color: #c1c7d0;\n        }\n\n        .tags a:visited {\n            color: #000;\n        }\n        .tags a:active {\n            color: #000;\n        }\n        .default-a:focus {\n            background-color: unset;\n        }\n\n        .default-a:hover{\n            text-decoration: underline;\n        }\n        .separator {\n        color:black !important;\n        font-weight:600;\n        }\n        .last {\n        color:black !important;\n        font-weight:600;\n        }\n        @media screen and (max-width:1034px) {\n        .author_links {\n        margin-right:auto;\n        }\n        .reviewer-info {\n        width: 100%;\n        }\n        }\n        @media screen and (max-width:767px) {\n        .language_switcher {\n        display: flex;\n        margin-top: 5px;\n        }\n        }\n        @media screen and (max-width:490px) {\n        .review-lowres {\n        display:flex !important;\n        }\n        .review-highres {\n        display:none !important;\n        }\n        .author_links {\n        margin-right:36px !important;\n        } \n        }\n    <\/style>\n    <div><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div>\n    \n    <div class=\"info-container\">\n    <div class=\"post-info with-reviewer\">\n        <div class=\"post-info-main\">\n            <div class=\"author-avatar\">\n                <picture>\n                        <source\n                            srcset=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.webp\" type=\"image\/webp\"> \n                        <source \n                            srcset=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" \n                            class=\"avatar lazyload\"\n                            width=\"64\" \n                            height=\"64\"\n                            src=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.jpg\"\n                            alt=\"avatar\"\n                            loading=\"lazy\"\n                            title=\"Tom Potanski\"\n                        >\n                <\/picture>\n            <\/div>\n            <div style=\"display:flex; flex-direction:column;margin-right:auto;\" class=\"author_links\">\n            <a href=\"\/author\/tom-potanski\/\" class=\"author-name\">Tom Potanski<\/a>\n            <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/tompotanski\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Tom Potanski on Linkedin\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                            <g id=\"linkedin5_layer\">\n                                <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                            <\/g>\n                        <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/tompotanski\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Tom Potanski on Twitter\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                            <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                        <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/www.crunchbase.com\/person\/tom-potanski\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Tom Potanski on Crunchbase\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\">\n                            <title>Crunchbase icon<\/title>\n                            <path d=\"M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z\"\/>\n                        <\/svg>\n                <\/a>\n            <\/li><\/ul>\n            <\/div>\n            <div class=\"reviewer-info\"> \n                                                                            <span style=\"color:#6D7082;\" class=\"\">\n                Last updated on \n                12. Juli 2020 \n                <span class=\"post-info-separator\">| <\/span> \n                17 min read\n                <span>\n                |\n                <span class=\"language_switcher\">\n                    Language:  \n                    \n<div\n\t role=\"navigation\" aria-label=\"Sprachwechsler\" class=\"wpml-ls-statics-shortcode_actions wpml-ls wpml-ls-legacy-dropdown js-wpml-ls-legacy-dropdown\">\n\t<ul>\n\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-de wpml-ls-current-language wpml-ls-item-legacy-dropdown\">\n\t\t\t<a href=\"#\" hreflang=\"\" lang=\"\" class=\"js-wpml-ls-item-toggle wpml-ls-item-toggle\" aria-current=\"page\" aria-expanded=\"false\" aria-controls=\"wpml-ls-submenu-default\" aria-label=\"Sprachumschalter, dr\u00fccken Sie Tab, um zu anderen Sprachen zu navigieren\" title=\"Wechseln zu Deutsch\">\n\t\t\t\t<span class=\"wpml-ls-native\">Deutsch<\/span><\/a>\n\n\t\t\t<ul id=\"wpml-ls-submenu-default\" class=\"wpml-ls-sub-menu\">\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-en wpml-ls-first-item\">\n\t\t\t\t\t\t<a href=\"https:\/\/staging.devsdata.com\/\" hreflang=\"en\" lang=\"en\" class=\"wpml-ls-link\" aria-label=\"Wechseln zu Englisch\" title=\"Wechseln zu Englisch\">\n\t\t\t\t\t\t\t<span class=\"wpml-ls-display\">Englisch<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-pl\">\n\t\t\t\t\t\t<a href=\"https:\/\/staging.devsdata.com\/pl\/\" hreflang=\"pl\" lang=\"pl\" class=\"wpml-ls-link\" aria-label=\"Wechseln zu Polnisch\" title=\"Wechseln zu Polnisch\">\n\t\t\t\t\t\t\t<span class=\"wpml-ls-display\">Polnisch<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-he\">\n\t\t\t\t\t\t<a href=\"https:\/\/staging.devsdata.com\/he\/\" hreflang=\"he\" lang=\"he\" class=\"wpml-ls-link\" aria-label=\"Wechseln zu Hebr\u00e4isch\" title=\"Wechseln zu Hebr\u00e4isch\">\n\t\t\t\t\t\t\t<span class=\"wpml-ls-display\">Hebr\u00e4isch<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\n\t\t\t\t\t<li class=\"wpml-ls-slot-shortcode_actions wpml-ls-item wpml-ls-item-sv wpml-ls-last-item\">\n\t\t\t\t\t\t<a href=\"https:\/\/staging.devsdata.com\/sv\/\" hreflang=\"sv\" lang=\"sv\" class=\"wpml-ls-link\" aria-label=\"Wechseln zu Schwedisch\" title=\"Wechseln zu Schwedisch\">\n\t\t\t\t\t\t\t<span class=\"wpml-ls-display\">Schwedisch<\/span><\/a>\n\t\t\t\t\t<\/li>\n\n\t\t\t\t\t\t\t<\/ul>\n\n\t\t<\/li>\n\n\t<\/ul>\n<\/div>\n\n                <\/span>\n            <\/span>\n            <\/span>\n                            <\/div>\n        \n        <\/div>\n    <\/div>\n    <div class=\"bookmark\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2020\/08\/bookmark-add-2-1.svg\" alt=\"bookmark\" title=\"\">\n    <\/div>\n    <div class=\"tags\"><a href=\"\/tag\/freelance\/\">Freelance<\/a><a href=\"\/tag\/guide\/\">Guide<\/a><a href=\"\/tag\/java\/\">Java<\/a><a href=\"\/tag\/software-development\/\">Software development<\/a><\/div>\n    <\/div>\n    <script type=\"module\" defer>\n      document.addEventListener(\"DOMContentLoaded\", function () {\n    \/\/ Get the current path from the URL\n    const path = window.location.pathname;\n\n    \/\/ Check if it starts with \/case-studies\n        if (path.startsWith(\"\/case-studies\")) {\n        const tagsElement = document.querySelector(\".tags\");\n        if (tagsElement) {\n        tagsElement.style.marginBottom = \"0\";\n        }\n        }\n        });\n        Array.from(document.getElementsByClassName(\"separator\")).forEach(el => {\n            el.textContent = \" > \";\n        });\n\n            var wpmlToggle = document.querySelector(\".language_switcher .wpml-ls-item-toggle\");\n            if (wpmlToggle) {\n                wpmlToggle.addEventListener(\"click\", function(e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    var currentLang = this.closest(\".wpml-ls-current-language\");\n                    if (currentLang) {\n                        currentLang.classList.toggle(\"wpml-dropdown-open\");\n                    }\n                });\n                document.addEventListener(\"click\", function(e) {\n                    var openDropdown = document.querySelector(\".wpml-ls-current-language.wpml-dropdown-open\");\n                    if (openDropdown && !openDropdown.contains(e.target)) {\n                        openDropdown.classList.remove(\"wpml-dropdown-open\");\n                    }\n                });\n            }\n\n            var languageList = document.querySelector(\"#language-list\");\n            var dropdownArrow = document.querySelector(\".dropdown-arrow\");\n\n            if(languageList){\n                languageList.addEventListener(\"click\", () => {\n                    languageList.classList.toggle(\"active\");\n                    document.querySelector(\"#arrow\").classList.toggle(\"rotated\");\n                })\n            }\n                \n            function handleViewportChange() {\n                if(languageList) {\n                    if (window.innerWidth < 1280) {\n                        if(!languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.add(\"mobile\");\n                            dropdownArrow.classList.add(\"mobile\");\n                        }\n                    } else {\n                        if(languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.remove(\"mobile\");\n                            dropdownArrow.classList.remove(\"mobile\");\n                        }\n                    }\n                };\n            };\n\n            \/\/ If there is a small\/no space between reviewer and author name, reviewer moves to the first row\n            function update_post_info_layout() {\n                const author_name_element = document.querySelector(\".author-name\");\n                const reviewer_element = document.querySelector(\".reviewer-info\");\n                const post_info_container = document.querySelector(\".post-info\");\n\n                if(reviewer_element) {\n                    let distance_next_to_author, reviewer_fits_next_to_author; \n                    if(post_info_container && author_name_element) {\n                        distance_next_to_author = post_info_container.getBoundingClientRect().right - author_name_element.getBoundingClientRect().right;\n                        reviewer_fits_next_to_author = distance_next_to_author - reviewer_element.clientWidth >= 15;\n                    }\n\n                    if(!reviewer_fits_next_to_author) {\n                        reviewer_element.classList.add(\"the_first_row\");\n                    } else if (reviewer_fits_next_to_author && reviewer_element.classList.contains(\"the_first_row\")) {\n                        reviewer_element.classList.remove(\"the_first_row\");\n                    }\n                }\n            }\n\n            handleViewportChange();\n            update_post_info_layout();\n             \n            window.addEventListener(\"resize\", () => {\n                handleViewportChange();\n                update_post_info_layout();\n            });\n    <\/script><br \/>\n<span class=\"img-container\"><picture><source srcset=\"\/wp-content\/uploads\/2020\/07\/java-entwickler-header.webp\" type=\"image\/webp\" \/><source srcset=\"\/wp-content\/uploads\/2020\/07\/java-entwickler-header.jpg\" type=\"image\/jpg\" \/><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" src=\"\/wp-content\/uploads\/2020\/07\/java-entwickler-header.jpg\" width=\"640\" height=\"426\" alt=\"Java entwickler\" title=\"\"><\/picture>\n<\/span><br \/>\n\u201e8 Jahre Erfahrung\u201c im Lebenslauf eines Bewerbers. Das klingt f\u00fcr viele Personalvermittler vielversprechend. Es mag zwar zutreffen, dass Erfahrung wichtig ist, aber jemand der routiniert ist und langj\u00e4hrige Erfahrung hat reflektiert m\u00f6glicherweise nicht immer seine F\u00e4higkeiten und Kompetenzen, oder es mangelt an F\u00e4higkeiten, die f\u00fcr ein Projekt n\u00f6tig sind.<br \/>\nEinige halten sich \u00fcber viele Jahre in derselben technischen Umgebung auf, steigen jedoch aufgrund mangelnder Motivation, F\u00e4higkeiten zur Probleml\u00f6sung, Lernbereitschaft oder aufgrund unzureichenden Wissens nie auf.<br \/>\nSeien Sie smart bei Ihren Einstellungsbem\u00fchungen und erfahren Sie mehr dar\u00fcber, wie wichtig diese f\u00fcr Ihr Unternehmen sein k\u00f6nnen, wie Sie die besten Engineers ausw\u00e4hlen und wie Sie erfolgreich mit den Verbesserungen und \u00c4nderungen in einer alten Java-Codebasis umgehen, um potenzielle Risiken zu vermeiden.<br \/>\n<span class=\"img-container\"><picture><source srcset=\"\/wp-content\/uploads\/2024\/06\/annie-spratt.webp\" type=\"image\/webp\" \/><source srcset=\"\/wp-content\/uploads\/2024\/06\/annie-spratt.png\" type=\"image\/png\" \/><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/06\/annie-spratt.png\" width=\"640\" height=\"427\" alt=\"Java entwickler\" title=\"\"><\/picture>\n<\/span><span class=\"pic-caption\">Erfahrene freiberufliche Entwickler m\u00fcssen Feedback von fr\u00fcheren Kunden oder sogar Testimonials von anderen Entwicklern erhalten. <\/span><\/p>\n<\/section>\n<section>\n<h2>Bew\u00e4hrte Einstellungstipps, mit denen Sie die besten freiberuflichen Java Entwickler finden k\u00f6nnen<\/h2>\n<h3>Suchen Sie nach den Sachkenntnissen, die f\u00fcr Ihre Bed\u00fcrfnisse relevant sind.<\/h3>\n<p>Wenn Sie schnell Ergebnisse liefern m\u00f6chten, ist es am besten, einen erfahrenen freiberuflichen Java-Entwickler zu finden. Die Erfahrung als Tech-Freiberufler ergibt sich nicht nur aus den Jahren des Lebenslaufs, sondern h\u00e4ngt vielmehr davon ab, wie relevant die bisherige Arbeitshistorie dieser Person wirklich ist. Es kann vorkommen, dass ein Entwickler 15 Jahre Erfahrung hat, diese aber nicht relevant ist.<br \/>\nJede Branche hat ihre eigenen Merkmale. Wenn Sie zum Beispiel \u00fcber Pharmaindustrie oder Versicherungen nachdenken, ist es sicherlich hilfreich, wenn die Person zuvor in diesem Sektor gearbeitet hat, da sie\/er ein viel tieferes Verst\u00e4ndnis des Gesamtgesch\u00e4fts und der Ziele besitzt, was zu einer besseren Schwerpunktsetzung bei der Arbeit und der Entwicklung von Ideen f\u00fchrt, die auf die spezifischen Bed\u00fcrfnisse des Unternehmens oder der Abteilung eingehen.<br \/>\nFinden Sie heraus, welchen Entwicklungsprozess diese Person f\u00fcr Projekte verwendet. Verhaltensweisen werden zu Gewohnheiten. Der Prozess, der f\u00fcr fr\u00fchere Projekte verwendet wurde, wird sich h\u00f6chstwahrscheinlich nicht ver\u00e4ndern. Technologieprozesse sowie die Tools und Frameworks \u00e4ndern sich st\u00e4ndig.<br \/>\nVielleicht ist es viel wichtiger, eine offene Frage zu stellen, wie der spezifische Arbeitsprozess, die Methodik oder der Rahmen in fr\u00fcheren Projekten funktioniert haben, was Vor- und Nachteile sind und was die Person jetzt anders machen w\u00fcrde, um Projekte zu optimieren und die Erfahrung zu erweitern, anstatt nur eine einfache Frage zu stellen, wie ein bestimmter Framework \/ Prozess funktionieren soll.<br \/>\nTesten Sie nicht auf Wissen, sondern auf Argumentation und Weisheit.<br \/>\nSchauen Sie sich Spezialisierungen innerhalb des Lebenslaufs an, um eine gute Auswahl zu treffen. Gibt es bemerkenswerte Erfolge oder Schulungen, die zum Erfolg des Projekts beitragen k\u00f6nnten? Dies ist besonders wichtig, wenn man eher junges Personal in Betracht zieht, sollte aber auch f\u00fcr \u00e4ltere Kandidaten nicht ignoriert werden &#8211; letztendlich gibt es eine Vielzahl von Engineers mit \u201ejahrelanger Erfahrung\u201c auf dem Papier.<\/p>\n<h3>\u00dcberpr\u00fcfen Sie Referenzen und Empfehlungen<\/h3>\n<p>Erfahrene freiberufliche Entwickler m\u00fcssen Feedback von fr\u00fcheren Kunden oder sogar Empfehlungsschreiben von Kollegen aus dem Ingenieurwesen erhalten. Gehen sie auf die Profile &#8211; GitHub, LinkedIn (auch Portale wie Clutch.co oder Goodfirms, falls vorhanden), Behance \/ Dribbble oder eine pers\u00f6nliche Website &#8211; und \u00fcberpr\u00fcfen Sie diese.<br \/>\nZufriedene Kunden hinterlassen gute Bewertungen, au\u00dfergew\u00f6hnlich zufriedene Kunden hinterlassen ebenfalls eine Empfehlung, w\u00e4hrend unzufriedene Kunden eine Warnung oder eine Ein-Stern-Bewertung abgeben. W\u00e4hrend ein perfektes 100% F\u00fcnf-Sterne-Ranking k\u00fcnstlich und falsch aussehen mag, ist das Vorhandensein von Ein-Sterne-Bewertungen ein Alarmsignal.<br \/>\nWenn Sie eine Person f\u00fcr eine wichtige Position f\u00fcr das Unternehmen in Betracht ziehen, schadet es auch nicht, fr\u00fchere Arbeitgeber (nat\u00fcrlich mit Ausnahme des aktuellen) zu kontaktieren und nach der pers\u00f6nlichen Entwicklung des Kandidaten zu fragen. Informieren Sie sich \u00fcber Kommunikationsf\u00e4higkeiten, analytisches Denken und den Umgang mit Aufgaben.<br \/>\nEs ist ratsam, mit ehemaligen Kunden zu reden, die mindestens 3 Monate mit dem potentiellen Kandidaten zusammengearbeitet haben. Oft sieht von au\u00dfen alles gut aus, aber es kann \u00fcberraschend vorkommen, dass die Person unterdurchschnittlich abschneidet und das Unternehmen nicht wirklich zufrieden ist.<br \/>\nEs ist besser, solche Informationen zu besitzen, bevor Sie eine Einstellungsentscheidung treffen und Ressourcen in den Onboarding-Prozess investieren, damit Sie mit der Einstellung hinterher nicht unzufrieden sind.<br \/>\nIn den meisten F\u00e4llen bieten Engineers mit einer guten Erfolgsbilanz an, w\u00e4hrend der Vorverhandlungen selbst einen Kontakt zu ihren fr\u00fcheren Kunden bereitzustellen, wenn das Projekt f\u00fcr sie wichtig ist.<\/p>\n<h3>Lassen Sie sich von einem Experten beraten<\/h3>\n<p>Wenn Sie mit den Neuerungen und der Fachsprache im Technologiebereich nicht vertraut sind, ist es am besten, einen Experten zu finden. Lassen Sie einen erfahrenen Java-Berater mit dem Kandidaten sprechen. Bitten Sie diesen, zu validieren oder zu widerlegen, was im Lebenslauf des Bewerbers steht. Wie das alte Sprichwort sagt: \u201cLeave it to the experts.\u201d (\u201e\u00dcberlassen Sie es den Experten.&#8220;)<\/p>\n<h3>F\u00fchren Sie ein kurzes Tech-Gespr\u00e4ch<\/h3>\n<p>Wir empfehlen Ihnen, bei der Durchf\u00fchrung dieses Gespr\u00e4chs einen Experten im Raum zu haben oder auch Ihren internen Java-Techniker einzubeziehen. Fragen Sie den Freiberufler nach den neuesten technischen Themen bez\u00fcglich Java, Big Data, Spark, Hadoop und Scala, mit denen sie\/er sich zuletzt besch\u00e4ftigt hat.<br \/>\nSprechen Sie \u00fcber ihre\/seine neuesten Entdeckungen oder \u00fcber die F\u00e4higkeiten, die sie\/er k\u00fcrzlich in Bezug auf Java-Entwicklung erworben hat. Bestimmen Sie durch dieses Gespr\u00e4ch ihr\/sein Interesse an der Branche, denn eine vorhandene Leidenschaft f\u00fcr Weiterbildung sagt auch viel \u00fcber die F\u00e4higkeiten von Bewerbern aus.<br \/>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT recruitment needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    <\/p>\n<h3>Testen Sie seine F\u00e4higkeiten und seine Intelligenz<\/h3>\n<p>Obwohl F\u00e4higkeiten und Erfahrung gute Bewertungskriterien f\u00fcr Entwickler sind, reichen sie einfach nicht aus, um festzustellen, ob diese an schwierigen Projekten arbeiten k\u00f6nnen. Die Arbeitseinstellung und der Arbeitsfluss einer Person sind f\u00fcr Entwicklungsprojekte von entscheidender Bedeutung.<br \/>\nF\u00fchren Sie eine zeitgesteuerte Probleml\u00f6sungspr\u00fcfung f\u00fcr Ihren Kandidaten durch und beobachten Sie, wie sie\/er sich unter Druck verh\u00e4lt. Dadurch erhalten Sie Aufschluss \u00fcber die intellektuellen F\u00e4higkeiten der Bewerber\/innen.<br \/>\nWenn sich der Kandidat in der N\u00e4he Ihres Unternehmensb\u00fcros ans\u00e4ssig ist, k\u00f6nnen Sie sie\/ihn dann zu einer lokalen Live-Codierungssitzung einladen (oder, wenn die Person weit entfernt wohnt, k\u00f6nnen Sie die Sitzung online organisieren). Dies bietet eine hervorragende Gelegenheit, den Kandidaten dem Rest Ihres Teams vorzustellen. Wenn Bewerber\/innen pers\u00f6nlich sehen, was Ihr Unternehmen macht und worum es in Ihrem Team geht, k\u00f6nnen Sie sehen, ob die Person mit dem Rest des Teams mithalten kann.<br \/>\nVergessen Sie nicht, die Qualit\u00e4t der Arbeit zu bewerten, die Bewerber\/innen w\u00e4hrend der Pr\u00fcfungen geleistet haben. Analysieren Sie den Grad an Kreativit\u00e4t und die Herangehensweise an die Situation. Denken Sie, dass sie\/er f\u00fcr die Aufgabe bereit ist?<br \/>\nDas Testen von F\u00e4higkeiten zur Probleml\u00f6sung wird oft mit dem Testen auf algorithmisches Wissen verwechselt. Und hier gibt es einen sehr wichtigen Unterschied: Unserer Ansicht nach sollten Sie nicht so viel auf Algo-Wissen testen, da es von den Ingenieuren nicht t\u00e4glich bei der Arbeit verwendet wird (ausgenommen ganz bestimmte F\u00e4lle, z. B. Software-Engineering bei Hedge-Fonds oder \u00fcberall dort, wo System Performance eine der wichtigsten Anforderungen ist).<br \/>\nStattdessen sollten Sie den Denkprozess und die F\u00e4higkeit zum schnellen Denken testen und wie man unter Druck geeignete L\u00f6sungen finden kann.<br \/>\nWenn wir diese Phase intern bei <a href=\"\/\">DevsData<\/a> durchf\u00fchren und Algorithmen beteiligt sind, erkl\u00e4ren wir h\u00e4ufig sogar explizit im Voraus, wie der Algorithmus oder eine Datenstruktur funktionieren, und erwarten dann, dass die Bewerber\/innen dieses Wissen nutzen und Argumentation zur L\u00f6sung eines bestimmten Problems anwenden.<\/p>\n<\/section>\n<section>\n<h2>Anspruchsvolle Java-Fragen, die Sie w\u00e4hrend eines Interviews stellen k\u00f6nnen<\/h2>\n<p>Wenn Sie das n\u00e4chste Mal einen Entwickler einstellen, stellen Sie ihr\/ihm die folgenden Fragen, die Bewerber\/innen fordern werden. Im Folgenden finden Sie einige der Fragen, die wir bei DevsData stellen. Sie helfen dabei, Ihren Kandidatenpool zu sieben und eine selektierte Auswahl zu treffen.<br \/>\nBitte denken Sie daran, dass der Wissenstest nur eine von vielen Phasen des Prozesses ist und niemals alleinstehendes Kriterium sein sollte. Es kann argumentiert werden, dass die Wissensfragen besser f\u00fcr Nachwuchskandidaten geeignet sind, da \u00e4ltere Bewerber\/innen mit diesen bereits vertraut sein sollten.<br \/>\nDar\u00fcber hinaus ist es sehr ratsam, offene Fragen zu einem umfassenderen Sachverhalt und den m\u00f6glichen Auswirkungen dieser sehr spezifischen technischen Entscheidung sowie zu einer umfassenderen Systemarchitektur zu stellen, die f\u00fcr gr\u00f6\u00dfere Unternehmensl\u00f6sungen geeignet ist. Wenn ein Kandidat wirklich entschlossen ist, kann das Wissen schnell erworben werden.<br \/>\nWas jedoch nicht schnell erreicht werden kann, sind ein breiteres Systemverst\u00e4ndnis und die F\u00e4higkeit, Probleme unter Druck schnell zu l\u00f6sen.<br \/>\nEs ist nicht ungew\u00f6hnlich, dass Ingenieure mit 15 oder 20 Jahren Erfahrung nur ungern etwas \u00fcber tiefgreifende Sprachtechniken, neue Ans\u00e4tze f\u00fcr die Softwareentwicklung und neue Frameworks lernen oder ebenfalls z\u00f6gern und sogar Angst haben, eine Herausforderung zur Probleml\u00f6sung anzunehmen. Und das ist eines der Unterscheidungsmerkmale, das nicht ignoriert werden sollte.<\/p>\n<h3>ArrayList, LinkedList und Vector sind Implementierungen der List-Schnittstelle. Welches davon ist am effizientesten zum Hinzuf\u00fcgen und Entfernen von Elementen zur Liste? Erl\u00e4utern Sie Ihre Antwort, einschlie\u00dflich aller anderen Alternativen, die Ihnen m\u00f6glicherweise bekannt sind.<\/h3>\n<p>Von den dreien bietet LinkedList im Allgemeinen die beste Leistung. Begr\u00fcndung:<br \/>\nArrayList und Vector verwenden jeweils ein Array, um die Elemente der Liste zu speichern. Wenn ein Element in die Mitte der Liste eingef\u00fcgt (oder aus dieser entfernt) wird, m\u00fcssen die folgenden Elemente entsprechend verschoben werden. Vector ist synchronisiert. Wenn keine threadsichere Implementierung erforderlich ist, wird empfohlen, ArrayList anstelle von Vector zu verwenden.<br \/>\nLinkedList hingegen wird mithilfe einer doppelt verkn\u00fcpften Liste durchgef\u00fchrt. Das Einf\u00fcgen oder Entfernen eines Elements erfordert daher nur das Aktualisieren der Links, die unmittelbar vor und nach dem Element stehen, das eingef\u00fcgt oder entfernt wird.<br \/>\nEs ist jedoch anzumerken, dass es bei einer bedenklichen Leistung besser ist, nur ein Array zu verwenden und es selbst zu verwalten oder eines der leistungsstarken Pakete von Drittanbietern wie Trove oder HPPC zu verwenden.<\/p>\n<h3>Warum ist es sicherer, vertrauliche Daten (wie ein Passwort, eine Sozialversicherungsnummer usw.) in einem Zeichenarray als in einem String zu speichern?<\/h3>\n<p>In Java sind Strings unver\u00e4nderlich und werden im String-Pool gespeichert. Das hei\u00dft, sobald ein String erstellt wurde, bleibt er im Pool im Speicher, bis er gel\u00f6scht wird.<br \/>\nSelbst nachdem Sie den Zeichenfolgenwert (z. B. das Kennwort) verarbeitet haben, bleibt er daher f\u00fcr einen unbestimmten Zeitraum (erneut bis zur L\u00f6schung) im Speicher verf\u00fcgbar, \u00fcber den Sie keine wirkliche Kontrolle haben. Daher kann jeder, der Zugriff auf einen Speicherauszug hat, m\u00f6glicherweise vertrauliche Daten extrahieren und ausnutzen.<br \/>\nWenn Sie dagegen ein ver\u00e4nderliches Objekt wie ein Zeichenarray zum Speichern des Werts verwenden, k\u00f6nnen Sie es auf leer setzen, sobald Sie damit fertig sind, mit der Gewissheit, dass es nicht mehr im Speicher verbleibt.<br \/>\nWir empfehlen jedoch, Operationen an vertraulichen Informationen in Klarschrift zu vermeiden &#8211; sie sollten nach M\u00f6glichkeit verschl\u00fcsselt werden.<br \/>\n<span class=\"img-container\"><picture><source srcset=\"\/wp-content\/uploads\/2024\/06\/tim-van-der-kuip.webp\" type=\"image\/webp\" \/><source srcset=\"\/wp-content\/uploads\/2024\/06\/tim-van-der-kuip.png\" type=\"image\/png\" \/><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/06\/tim-van-der-kuip.png\" width=\"640\" height=\"427\" alt=\"freelance java\" title=\"\"><\/picture>\n<\/span><span class=\"pic-caption\">Bestimmen Sie durch diesen Vortrag sein Interesse an der Branche, denn ihre Leidenschaft f\u00fcr das Lernen spricht auch viel \u00fcber seine F\u00e4higkeiten.<\/span><\/p>\n<h3>Was bedeutet es f\u00fcr eine Collection, von einer anderen \u201eunterst\u00fctzt\u201c zu werden? Geben Sie ein Beispiel daf\u00fcr, wann diese Eigenschaft n\u00fctzlich ist.<\/h3>\n<p>Wenn eine Collection eine andere unterst\u00fctzt, bedeutet dies, dass \u00c4nderungen einer Collection in der anderen wiedergegeben werden und umgekehrt. Angenommen, wir m\u00f6chten eine Whitelist-Funktion erstellen, mit der ung\u00fcltige Schl\u00fcssel aus einer Map entfernt werden.<br \/>\nDies kann viel einfacher mit Map.keySet erreicht werden, welches einen Satz von Schl\u00fcsseln zur\u00fcckgibt, welche von der urspr\u00fcnglichen Map unterst\u00fctzt werden. Wenn man Schl\u00fcssel aus dem Schl\u00fcsselsatz entfernen, werden diese auch aus der Hintergrundzuordnung entfernt:<\/p>\n<blockquote><p>public static &lt;K, V&gt; Map&lt;K, V&gt; whitelist(Map&lt;K, V&gt; map, K&#8230; allowedKeys) {<br \/>\nMap&lt;K, V&gt; copy = new HashMap&lt;&gt;(map);<br \/>\ncopy.keySet().retainAll(asList(allowedKeys));<br \/>\nreturn copy;<br \/>\n}<\/p><\/blockquote>\n<p>retainAll schreibt sich auf die Hintergrundzuordnung und erm\u00f6glicht es uns, auf einfache Weise etwas zu implementieren, das andernfalls das Durchlaufen der Eintr\u00e4ge in der Eingabezuordnung erfordern w\u00fcrde, um sie mit allowKey usw. zu vergleichen.<br \/>\nBeachten Sie, dass es wichtig ist, die Dokumentation der Hintergrundsammlung zu beachten, um festzustellen, welche \u00c4nderungen erfolgreich aufgeschrieben werden. Im obigen Beispiel w\u00fcrde map.keySet (). Add (value) fehlschlagen, da der Hintergrundzuordnung kein Schl\u00fcssel ohne Wert hinzugef\u00fcgt werden kann.<br \/>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT recruitment needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    <\/p>\n<h3>Beschreiben und vergleichen Sie fail-fast und fail-safe Iteratoren. Nennen Sie Beispiele.<\/h3>\n<p>Der Hauptunterschied zwischen fail-fast und fail-safe Iteratoren besteht darin, ob die Sammlung w\u00e4hrend der Iteration ge\u00e4ndert werden kann oder nicht. Fail-safe Iteratoren erm\u00f6glichen dies, fail-fast Iteratoren nicht:<\/p>\n<ul class=\"blog-list\">\n<li>Fail-Fast-Iteratoren arbeiten direkt mit der Sammlung. W\u00e4hrend der Iteration schlagen fail-fast Iteratoren fehl, sobald sie feststellen, dass die Sammlung ge\u00e4ndert wurde (d. h., wenn festgestellt wird, dass ein Mitglied hinzugef\u00fcgt, ge\u00e4ndert oder entfernt wurde), und l\u00f6sen eine ConcurrentModificationException aus. Einige Beispiele sind ArrayList, HashSet und HashMap (die meisten JDK1.4-Sammlungen sind fail-fast implementiert).<\/li>\n<li>Fail-safe-Iteratoren arbeiten auf der Basis einer geklonten Kopie der Sammlung und l\u00f6sen daher keinen Sonderfall aus, wenn die Sammlung w\u00e4hrend der Iteration ge\u00e4ndert wird. Beispiele w\u00e4ren Iteratoren, die von ConcurrentHashMap oder CopyOnWriteArrayList zur\u00fcckgegeben werden<\/li>\n<\/ul>\n<h3>Was ist das \u201avolatile keyword&#8216;? Wie und warum w\u00fcrden Sie es verwenden?<\/h3>\n<p>In Java hat jeder Thread einen eigenen Stapel, einschlie\u00dflich einer eigenen Kopie der Variablen, auf die es zugreifen kann. Wenn der Thread erstellt wird, kopiert er den Wert aller zug\u00e4nglichen Variablen in seinen eigenen Stapel. Das volatile keyword sagt der JVM im Grunde genommen \u201eWarnung, diese Variable kann in einem anderen Thread ge\u00e4ndert werden&#8220;.<br \/>\nIn allen Java-Versionen garantiert das volatile keyword die globale Reihenfolge beim Lesen und Schreiben einer Variablen. Dies bedeutet, dass jeder Thread, der auf ein volatiles Feld zugreift, den aktuellen Wert der Variablen liest, anstatt (m\u00f6glicherweise) einen zwischengespeicherten Wert zu verwenden.<br \/>\nIn Java 5 und neueren Versionen gehen volatile Lese- und Schreibvorg\u00e4nge eine happens-before Beziehung ein, \u00e4hnlich wie beim Aneignen und Freigeben eines Mutexes. Die Verwendung volatiler keywords ist m\u00f6glicherweise schneller als eine Sperre, funktioniert jedoch in einigen Situationen nicht. Das Spektrum der Situationen, in denen volatile keywords wirksam sind, wurde in Java 5 erweitert.<br \/>\nInsbesondere die doppelt \u00fcberpr\u00fcfte Verriegelung funktioniert jetzt ordnungsgem\u00e4\u00df. Das volatile keyword ist auch f\u00fcr 64-Bit-Typen wie long und double n\u00fctzlich, da sie in zwei Operationen geschrieben werden. Ohne das volatile keyword laufen Sie der Gefahr, veraltete oder ung\u00fcltige Werte zu erhalten.<br \/>\nEin h\u00e4ufiges Beispiel f\u00fcr die Verwendung von volatile keywords ist, wenn ein Flag einen Thread beendet. Wenn Sie einen Thread gestartet haben und ihn sicher von einem anderen Thread aus unterbrechen m\u00f6chten, k\u00f6nnen Sie den Thread regelm\u00e4\u00dfig einen Flag \u00fcberpr\u00fcfen lassen (d. h., um ihn zu stoppen, setzen Sie den Flag auf true).<br \/>\nIndem Sie den Flag volatile machen, k\u00f6nnen Sie sicherstellen, dass der Thread, der seinen Wert \u00fcberpr\u00fcft, erkennt, dass er auf true gesetzt wurde, ohne dass ein synchronisierter Block verwendet werden muss. Beispielsweise:<\/p>\n<blockquote><p>public class Foo extends Thread {<br \/>\nprivate volatile boolean close = false;<br \/>\npublic void run() {<br \/>\nwhile(!close) {<br \/>\n\/\/ do work<br \/>\n}<br \/>\n}<br \/>\npublic void close() {<br \/>\nclose = true;<br \/>\n\/\/ interrupt here if needed<br \/>\n}<br \/>\n}<\/p><\/blockquote>\n<\/section>\n<section>\n<h2>Java-Trends f\u00fcr 2020 und dar\u00fcber hinaus<\/h2>\n<p>Oracle ver\u00f6ffentlicht seit 2017 alle sechs Monate eine neue Java-Version. Die neueste Version, Java 14, wurde am 17. M\u00e4rz 2020 ver\u00f6ffentlicht und f\u00fchrte 16 JEPs (JDK Enhancement Proposals) ein. Lernen Sie schnell die interessantesten kennen.<\/p>\n<h3>Java14 \u2013 \u00c4nderungen<\/h3>\n<ul class=\"blog-list\">\n<li>Switch wurde erweitert, sodass es entweder als Anweisung oder als Ausdruck verwendet werden kann. Somit k\u00f6nnen beide Formulare entweder den traditional case &#8230; verwenden: Labels (mit fall through), oder den new case &#8230; -&gt; Labels (ohne fall through), mit einer weiteren neuen Anweisung zum Abgeben eines Werts aus einer Switch Expression.<\/li>\n<li>G1 wurde optimiert, um die Zuordnungsleistung auf NUMA-Speichersystemen (Non-Uniform Memory Access) zu verbessern.<\/li>\n<li>JDK Flight-Recorder-Daten sind jetzt als Datenstrom verf\u00fcgbar und erm\u00f6glichen eine kontinuierliche \u00dcberwachung.<\/li>\n<li>Neue JDK-spezifische Dateizuordnungsmodi wurden hinzugef\u00fcgt, damit mit der FileChannel-API MappedByteBuffer-Instanzen erstellt werden k\u00f6nnen, die auf non-volatile memory (NVM) verweisen.<\/li>\n<li>Erm\u00f6glicht die Formatierung von W\u00e4hrungen mit l\u00e4nderspezifischen Abrechnungsformaten, z. B. (3,27 USD) anstelle von &#8211; 3,27 USD<\/li>\n<li>Verbesserte com.sun.management.OperatingSystemMXBean, um sicherzustellen, dass Werte basierend auf der aktuellen Betriebsumgebung gemeldet werden, z. B. eine Container Environment. Die MXBean f\u00fcr Tools zum Abrufen von Informationen zum Betriebssystem wurde f\u00fcr Container Environments verbessert.<\/li>\n<\/ul>\n<p>Informationen zu \u00c4nderungen in fr\u00fcheren Versionen finden Sie auf der <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/14\/migrate\/index.html#JSMIG-GUID-6B103F24-CA12-4645-A37C-7AB9E7EF1878\" rel=\"nofollow noopener\" target=\"_blank\">offiziellen Oracle-Dokumentationsseite<\/a>.<\/p>\n<h3>Scala<\/h3>\n<p>Die komplexen Funktionen von Scala f\u00f6rdern eine bessere Codierung und bieten eine Leistungssteigerung. Funktionen, Makros und Tupel sind nur einige der Verbesserungen, die Scala bietet. Scala integriert funktionale Programmierung und objektorientierte Programmierung in eine leistungsstarke Sprache.<br \/>\nEntwickler und diejenigen, die sie einstellen, m\u00fcssen die St\u00e4rken von Scala als Sprache wahrnehmen, um die angebotenen Funktionen voll zu nutzen. Sie wurde entwickelt, um die Einschr\u00e4nkungen von Java zu beseitigen und bietet eine gut organisierte und sauberere Sprache.<br \/>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT recruitment needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    <\/p>\n<h3>Microservice-Architektur versus Monolith<\/h3>\n<p>Das Erstellen komplexer Anwendungen ist von Natur aus schwierig. Eine monolithische Architektur eignet sich besser f\u00fcr einfache, leichte Anwendungen. Es ist wichtig, die monolithische Architektur zu verstehen, da sie die Grundlage f\u00fcr die Microservices-Architektur darstellt, bei der jeder Dienst f\u00fcr sich gem\u00e4\u00df der monolithischen Architektur implementiert wird.<br \/>\nDas Microservice-Muster ist eine bessere Wahl f\u00fcr komplexe, sich entwickelnde Anwendungen. Tats\u00e4chlich dreht sich beim Microservices-Ansatz alles um die Handhabung eines komplexen Systems. Zu diesem Zweck f\u00fchrt der Ansatz jedoch eine Reihe von Komplexit\u00e4ten und Implementierungsherausforderungen ein.<br \/>\nInsgesamt ist es empfehlenswert, die Anwendung in Microservices zu unterteilen, aber auf der anderen Seite erfordert dies auch mehr technische Arbeit. Deshalb bauen viele Startups ihren MVP als Monolithen.<\/p>\n<h3>Hadoop-, Spark- und Big Data-\u00d6kosystem &#8211; Entwicklung kundenspezifischer Big Data-L\u00f6sungen<\/h3>\n<p>Java-Entwickler haben Zugriff auf eine Vielzahl von Open-Source-Big-Data-Tools: Apache Hadoop, Apache Spark und viele mehr. Die meisten Java-Ingenieure k\u00f6nnen problemlos ein neues Big-Data-Tool \u00fcbernehmen, da es sich um das Erlernen einer neuen API handelt. Einige der Kernmodule dieser Tools sind in Java oder in Scala geschrieben.<br \/>\nIn unseren anderen Blog-Beitr\u00e4gen erfahren Sie mehr \u00fcber <a href=\"\/big-data-financial-services\/\">Big Data in Financial Services<\/a> und k\u00f6nnen sich mit den <a href=\"\/big-data-terms-every-manager-should-know\/\">grundlegenden Begriffen<\/a> zu Big Data und Data Analytics vertraut machen.<\/p>\n<h3>Mit DevOps Schritt halten<\/h3>\n<p>Versuchen Sie nach M\u00f6glichkeit, Tools und Ans\u00e4tze wie Docker, infrastructure-as-a-code (Kubernetes, Terraform) und kontinuierliche Integration in Ihren Projekten zu verwenden. Im Rahmen neuer Projekte sind diese unerl\u00e4sslich.<br \/>\nBis 2022 wird der DevOps-Markt einen Wert von 6,6 Milliarden US-Dollar erreichen. Man kann also mit Recht sagen, dass neue Verfahren und moderne Technologien den Technologiemarkt pr\u00e4gen werden. Wollen Sie schnellere und effizientere Bereitstellungen durchf\u00fchren? In diesem Fall sollte die Anwendung der Automatisierung auf Ihrer Tagesordnung stehen.<\/p>\n<h3>Aktualisieren Sie Ihre Java 7-Anwendung lieber fr\u00fcher als sp\u00e4ter<\/h3>\n<p>Wir wissen, dass sich jeder an Java 7 oder 8 gew\u00f6hnt hat, aber jetzt ist es Zeit, auf die neueste Version von Java umzusteigen. Oracle unterst\u00fctzt Java 8 nicht mehr. Es liegt also an Ihnen, neu hinzugef\u00fcgte Funktionen herunterzuladen und zu installieren und Ihr Team zu ermutigen, diesen Schritt jetzt auszuf\u00fchren. Jede neue Java-Version verf\u00fcgt \u00fcber viele Funktionen und Verbesserungen, die Sie in Ihrem Projekt verwenden k\u00f6nnen.<br \/>\nBei der Aktualisierung einer sehr alten Anwendung sollten sorgf\u00e4ltige, schrittweise Aktualisierungen in Betracht gezogen werden, die durch umfangreiche automatisierte und manuelle Tests des Systems, seiner Komponenten, Kernfunktionen und miteinander verbundenen Anwendungen verst\u00e4rkt werden.<br \/>\nAktualisieren Sie also zuerst von Java 7 auf Java 8 in einer Staging-Umgebung, testen Sie das System gr\u00fcndlich, gehen Sie zur Produktion \u00fcber und experimentieren Sie dann mit den Updates f\u00fcr Java 9.<br \/>\nWenn die Version des Java-Systems noch \u00e4lter ist &#8211; und wir waren k\u00fcrzlich an einem Unternehmensprojekt beteiligt, das Java 4 (!) verwendet -, wird die Aktualisierung mit Sicherheit eine Herausforderung sein, und Sie ben\u00f6tigen daf\u00fcr hochklassige Ingenieure. Je l\u00e4nger Sie warten, desto schwieriger wird es. Ergreifen Sie jetzt die n\u00f6tigen Ma\u00dfnahmen.<\/p>\n<\/section>\n<section>\n<h2>Tipps zum Verwalten einer alten Java-Produktionsanwendung<\/h2>\n<h3>Halten Sie Ihre Dokumentation auf dem neuesten Stand<\/h3>\n<p>Es ist sehr wichtig, dass die Dokumentation ab dem ersten Entwicklungstag erstellt und regelm\u00e4\u00dfig aktualisiert wird. Dadurch enthalten die Dokumente alle notwendigen Informationen, um die Softwareanalyse und die m\u00f6gliche Implementierung neuer Mitarbeiter zu erleichtern.<br \/>\nUnd selbst sp\u00e4ter, wenn das System in andere Module oder APIs (entweder extern oder intern) integriert wird, sollte der Prozess ebenfalls gut dokumentiert sein. Dann ist es keine separate Anwendung mehr, sondern ein Live-\u00d6kosystem von IT-L\u00f6sungen, die koexistieren und miteinander kommunizieren.<br \/>\n\u00dcberlegen Sie, wie viel teurer und schwieriger es w\u00e4re, \u00c4nderungen in f\u00fcnf Jahren vorzunehmen, wenn Sie jetzt keine Ma\u00dfnahmen ergreifen und die \u00c4nderungen dokumentieren.<\/p>\n<h3>Ausnahmen nicht hinnehmen<\/h3>\n<p>Vermeiden Sie es, die Ausnahmen hinzunehmen. Der Stack-Trace ist die wertvollste Information zur Fehlerbehebung. In dem Produktionssystem, in dem es vorrangig darum geht, das System aufzurufen und dann die Grundursache zu finden, sind diese Ausnahmen wertvoll, da Sie ohne diese niemals feststellen k\u00f6nnen, was in diesem Moment mit Ihrer Anwendung passiert ist.<br \/>\nDrucken Sie die Stapelverfolgung andererseits nicht mehrmals. Das Drucken eines Stack-Trace ist ein ressourcenintensiver Prozess und sollte gesteuert werden, d. h. man sollte mehr Informationen im DEBUG- oder INFO-Modus, und nur wichtige Informationen im PRODUCTION-Modus drucken.<\/p>\n<h3>Schlie\u00dfen Sie die Datenbankverbindungen<\/h3>\n<p>Dies ist einer der h\u00e4ufigsten Gr\u00fcnde f\u00fcr Produktionsprobleme im letzten Jahrzehnt. Stellen Sie sicher, dass Sie die Datenbankverbindung immer schlie\u00dfen, damit sie wieder f\u00fcr den Pool freigegeben wird. Dies ist auch eine der Best Practices von JDBC.<br \/>\nEin h\u00e4ufiger Fehler besteht darin, die Verbindung nicht im letzten Block eines Try-Catch zu schlie\u00dfen. Wenn ein Verbindungspoolleck vorliegt, ist Ihr Verbindungspool bald ersch\u00f6pft und Ihr Benutzer wird eine Verlangsamung wahrnehmen.<br \/>\nEs gilt die Verwendung einer Produktionsdatenbank f\u00fcr Systemtests zu vermeiden \u2013 daf\u00fcr sollten Mocks verwendet werden. Komischerweise haben wir vor einiger Zeit einen Vertrag f\u00fcr eine Investmentbank abgeschlossen, die genau das getan hat.<br \/>\nInfolgedessen waren die Tests sehr ressourcenintensiv, wirkten sich auf die Leistung des Produktionssystems aus und die Coverage war gering (angeblich als Kompromiss f\u00fcr die Leistung). Das sollte vermieden werden.<br \/>\n\n            <div class=\"schedule-consultation middle-scheduler\">\n                <div class=\"block-contact\">\n                    <p>Do you have IT recruitment needs?<\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83c\udfa7\n                    <span>Schedule a meeting<\/span>\n                <\/div>\n            <\/div>\n    <\/p>\n<h3>Vermeiden Sie das Laden gro\u00dfer Ergebnismengen aus der Datenbank<\/h3>\n<p>Dies ist einer der h\u00e4ufigsten Fehler von Anf\u00e4ngern und fortgeschrittenen Java-Programmierern, die nichts \u00fcber Paging oder Paginierung wissen. Sie k\u00f6nnen nicht einfach jeden Datensatz, z.B. Bestellung oder Handel, aus der Datenbank in einem Aufruf laden.<br \/>\nIn einigen F\u00e4llen geht Ihnen nat\u00fcrlich der Speicher aus und es stellt auch eine Verschwendung von Netzwerkbandbreite, CPU und Speicher dar, weil der Benutzer m\u00f6glicherweise nicht alle diese Daten ben\u00f6tigt. Zweitens k\u00f6nnen Sie die Daten nicht f\u00fcr immer in Ihrer Anwendung behalten, da sie m\u00f6glicherweise veraltet sind und diese erneut geladen werden m\u00fcssen.<br \/>\nAnstatt alle Datens\u00e4tze auf einmal zu laden, sollte man eine Art Paginierung oder verz\u00f6gertes Laden implementieren, damit nicht alles am Anfang geladen werden muss.<\/p>\n<h3>Vermeiden Sie eine harte Codierung der Konfigurationsparameter<\/h3>\n<p>Es gibt kaum einen Code, in dem etwas nicht fest codiert ist &#8211; insbesondere wenn Zeitdruck oder enge Budgetbeschr\u00e4nkungen bestehen \u2013 wird so f\u00fcr Werte wie URLs, Verzeichnispositionen, Benutzernamen \/ Kennw\u00f6rter, Cache-Gr\u00f6\u00dfen, Protokollstufen usw. verfahren, f\u00fchrt der Code zu einem Produkt, das schwer zu warten, nicht \u00fcbertragbar und schwer anzupassen ist.<br \/>\nAnstatt Konfigurationsparameter fest zu codieren, m\u00fcssen diese in einer Eigenschaftendatei externalisiert werden \u2013 hierbei ist das YAML-Format eine der beliebtesten Optionen. Es ist nicht nur leicht von der Maschine zu analysieren, sondern auch f\u00fcr einen Menschen gut lesbar (auch wenn es nicht technisch ist).<\/p>\n<h3>Schreiben Sie keinen plattformspezifischen Code<\/h3>\n<p>Obwohl Java plattformunabh\u00e4ngig ist, k\u00f6nnen Sie Ihre Java-Anwendungsplattform abh\u00e4ngig machen, wenn Sie nicht aufpassen. Programmierer sollten nichts codieren, was mit dem lokalen Betriebssystem zusammenh\u00e4ngt, sondern darauf abzielen, Dinge zu abstrahieren, die sie \u00fcbertragbarer, universeller und leichter zu warten machen.<\/p>\n<h3>Vermeiden Sie das Verdichten mehrerer Versionen derselben JAR-Dateien<\/h3>\n<p>Das Packen von Utility-JAR-Dateien an mehreren Stellen, insbesondere verschiedener Versionen derselben Utility-JAR an verschiedenen Orten, ist die Ursache f\u00fcr viele Produktionsprobleme.<br \/>\nSie m\u00fcssen \u00fcber eine saubere Build- und Versionsverarbeitung verf\u00fcgen, insbesondere f\u00fcr interne Anwendungen. Erw\u00e4gen Sie die Verwendung von Maven f\u00fcr das Abh\u00e4ngigkeitsmanagement. Dies ist wesentlich leichter, als versionierte JAR-Dateien im lib-Ordner zu speichern.<\/p>\n<h3>Tipps zur Wartung von Java-Anwendungen &#8211; Zusammenfassung<\/h3>\n<p>Die genannten Dinge k\u00f6nnen einen enormen Unterschied bei der Entwicklung und Wartung einer realen Java-Anwendung bewirken. Wenn Sie diese Details beachten, k\u00f6nnen Sie Ihr Projekt st\u00e4rker vorantreiben. Ein guter Java-Architekt stellt sicher, dass die Anwendung sowohl einfach zu warten als auch zu unterst\u00fctzen ist.<\/p>\n<\/section>\n<section>\n<h2>Fazit<\/h2>\n<p>Die Einstellung effektiver und freiberuflicher Java-Entwickler ist nicht gerade einfach. Sie m\u00fcssen viel Zeit und M\u00fche investieren, um die besten Kandidaten aus einem riesigen Talentpool auszuw\u00e4hlen. Wir hoffen, dass die oben genannten Richtlinien Ihnen dabei helfen, den gesamten Prozess zu rationalisieren, sodass Sie talentierte und zu Ihren Projekten passende Mitarbeiter\/innen finden werden.<br \/>\n<span class=\"img-container\"><picture><source srcset=\"\/wp-content\/uploads\/2024\/06\/nicole-wolf.webp\" type=\"image\/webp\" \/><source srcset=\"\/wp-content\/uploads\/2024\/06\/nicole-wolf.png\" type=\"image\/png\" \/><img decoding=\"async\" src=\"\/wp-content\/uploads\/2024\/06\/nicole-wolf.png\" alt=\"freelance java developer\" title=\"\"><\/picture>\n<\/span><span class=\"pic-caption\">Vergessen Sie nicht, die Qualit\u00e4t der Arbeit zu bewerten, die der Freiberufler w\u00e4hrend der Pr\u00fcfungen geleistet hat. Analysieren Sie seinen Grad an Kreativit\u00e4t und Herangehensweise an die Situation. Denken Sie, dass sie f\u00fcr die Aufgabe bereit sind? <\/span><\/p>\n<\/section>\n\n        <section class=\"author_section_container\">\n            \n            <p class=\"contact_on_twitter\">\n                Any questions or comments? Let me know on \n                <a href=\"https:\/\/twitter.com\/tompotanski\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Twitter\/X<\/a>.\n            <\/p> \n        \n            <div class=\"schedule-consultation\">\n                <div class=\"block-contact\">\n                    <p>Discover how IT recruitment and staffing can address your talent needs. Explore trending regions \n        like Poland, Portugal, Mexico, Brazil and more. <\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83d\uddd3\ufe0f\n                    <span>Schedule a consultation<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"author_section\">\n                <div class=\"author_photo_container\">\n                    <picture>\n                        <source srcset=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.webp\" type=\"image\/webp\"> \n                        <source srcset=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" class=\"avatar lazyload\" width=\"64\" height=\"64\" src=\"https:\/\/staging.devsdata.com\/wp-content\/uploads\/2024\/11\/tompotanski-new-min.jpg\" alt=\"avatar\" loading=\"lazy\" title=\"Tom Potanski\" >\n                    <\/picture>\n                    <a class=\"read_full_bio\" href=\"\/author\/tom-potanski\/\" aria-label=\"Read more from Tom Potanski\">Read full bio<\/a>\n                <\/div>\n                <div class=\"author_info_container\">\n                    <div class=\"author_info\" data-role=\"Author\">\n                        <h4 id=\"author_title\">\n                            <a href=\"\/author\/tom-potanski\/\" aria-label=\"Read more from Tom Potanski\">Tom Potanski<\/a>\n                            <span class=\"position\">Managing Director<\/span>\n                        <\/h4>\n                    <\/div>\n                <\/div>\n                <div class=\"author_about\">\n                    <span>Tom is a passionate and experienced technology leader with 12 years of commercial experience in software and technology. His focus is on merging business with technology to help American clients find top technical talent in Europe and Latin America. He leverages industry insights and strategic thinking to connect companies with the right professionals, building lasting client relationships.<\/span>\n                    <div class=\"links\">\n                        <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/tompotanski\/\" aria-label=\"Check out Tom Potanski on LinkedIn\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                        <g id=\"linkedin5_layer\">\n                            <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                        <\/g>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/tompotanski\" aria-label=\"Check out Tom Potanski on Twitter\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                        <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/www.crunchbase.com\/person\/tom-potanski\" aria-label=\"Check out Tom Potanski on Chrunchbase\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"currentColor\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\">\n                        <title>Crunchbase icon<\/title>\n                        <path d=\"M21.6 0H2.4A2.41 2.41 0 0 0 0 2.4v19.2A2.41 2.41 0 0 0 2.4 24h19.2a2.41 2.41 0 0 0 2.4-2.4V2.4A2.41 2.41 0 0 0 21.6 0zM7.045 14.465A2.11 2.11 0 0 0 9.84 13.42h1.66a3.69 3.69 0 1 1 0-1.75H9.84a2.11 2.11 0 1 0-2.795 2.795zm11.345.845a3.55 3.55 0 0 1-1.06.63 3.68 3.68 0 0 1-3.39-.38v.38h-1.51V5.37h1.5v4.11a3.74 3.74 0 0 1 1.8-.63H16a3.67 3.67 0 0 1 2.39 6.46zm-.223-2.766a2.104 2.104 0 1 1-4.207 0 2.104 2.104 0 0 1 4.207 0z\"\/>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/medium.com\/@tompotanski\" aria-label=\"Check out Tom Potanski on Medium\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" width=\"800px\" height=\"800px\" viewBox=\"0 -55 256 256\" version=\"1.1\" preserveAspectRatio=\"xMidYMid\">\n                        <g>\n                            <path d=\"M72.2009141,1.42108547e-14 C112.076502,1.42108547e-14 144.399375,32.5485469 144.399375,72.6964154 C144.399375,112.844284 112.074049,145.390378 72.2009141,145.390378 C32.327779,145.390378 0,112.844284 0,72.6964154 C0,32.5485469 32.325326,1.42108547e-14 72.2009141,1.42108547e-14 Z M187.500628,4.25836743 C207.438422,4.25836743 223.601085,34.8960455 223.601085,72.6964154 L223.603538,72.6964154 C223.603538,110.486973 207.440875,141.134463 187.503081,141.134463 C167.565287,141.134463 151.402624,110.486973 151.402624,72.6964154 C151.402624,34.9058574 167.562834,4.25836743 187.500628,4.25836743 Z M243.303393,11.3867175 C250.314,11.3867175 256,38.835526 256,72.6964154 C256,106.547493 250.316453,134.006113 243.303393,134.006113 C236.290333,134.006113 230.609239,106.554852 230.609239,72.6964154 C230.609239,38.837979 236.292786,11.3867175 243.303393,11.3867175 Z\" fill=\"currentColor\"><\/path>\n                        <\/g>\n                    <\/svg>    \n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"mailto:tom.potanski@devsdata.com\" aria-label=\"Email Tom Potanski\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M64 112c-8.8 0-16 7.2-16 16v22.1l172.5 141.6c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16zM48 212.2V384c0 8.8 7.2 16 16 16h384c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0zM0 128c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v256c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"\/><\/svg>\n                <\/a>\n            <\/li><\/ul>\n                        <a class=\"recruitment_link\" href=\"\/recruitment\/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            Read more about our IT staffing services\n                            <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\">\n                                <path d=\"M5 12H19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                                <path d=\"M12 5L19 12L12 19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"tags-author \">\n                <a href=\"\/tag\/freelance\/\">Freelance<\/a><a href=\"\/tag\/guide\/\">Guide<\/a><a href=\"\/tag\/java\/\">Java<\/a><a href=\"\/tag\/software-development\/\">Software development<\/a>\n            <\/div>\n        <\/section>\n    \n","protected":false},"excerpt":{"rendered":"<p>Java Entwickler Tipps zur Einstellung von Java Engineers, Branchentrends, und wie man \u00e4ltere Java-Anwendungen wartet. \u201e8 Jahre Erfahrung\u201c im Lebenslauf eines Bewerbers. Das klingt f\u00fcr viele Personalvermittler vielversprechend. Es mag zwar zutreffen, dass Erfahrung wichtig ist, aber jemand der routiniert ist und langj\u00e4hrige Erfahrung hat reflektiert m\u00f6glicherweise nicht immer seine F\u00e4higkeiten und Kompetenzen, oder es [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":28836,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"blog_post.php","format":"standard","meta":{"footnotes":""},"categories":[5,4],"tags":[289,263,288,258],"class_list":["post-9253","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-and-technology","category-german","tag-freelance","tag-guide","tag-java","tag-software-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/posts\/9253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/comments?post=9253"}],"version-history":[{"count":13,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/posts\/9253\/revisions"}],"predecessor-version":[{"id":73239,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/posts\/9253\/revisions\/73239"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/media\/28836"}],"wp:attachment":[{"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/media?parent=9253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/categories?post=9253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.devsdata.com\/de\/wp-json\/wp\/v2\/tags?post=9253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}