Знание C++, сколько времени занимает изучить Java? [закрытый]

Это функция, которую я использую для привязки к каталогу LDAP с использованием системных учетных данных, поиска предоставленного идентификатора пользователя и затем проверки предоставленных учетных данных пользователя. Для использования функции с Active Directory 'strUIDAttr' - это sAMAccountName.

protected string ldapAuthTest(string strLDAPServer, string strSuppliedUser, string strSuppliedPwd, string strSystemUID, string strSystemPwd, string strLDAPUserBase, string strUIDAttr)
{
    strSuppliedUser = strSuppliedUser.Trim();
    string strResults = "";
    string strLDAPUserHost = strLDAPServer + strLDAPUserBase;

    // Establish LDAP connection and bind with system ID
    System.DirectoryServices.DirectoryEntry dirEntry = new System.DirectoryServices.DirectoryEntry();
    dirEntry.Path = strLDAPUserHost;
    dirEntry.Username = strSystemUID;
    dirEntry.Password = strSystemPwd;

    //dirEntry.AuthenticationType = System.DirectoryServices.AuthenticationTypes.None;
    dirEntry.AuthenticationType = System.DirectoryServices.AuthenticationTypes.SecureSocketsLayer;
    try
    {
        dirEntry.RefreshCache();

        // Search directory for the user logging on
        string strLDAPFilter = "(&(" + strUIDAttr + "=" + strSuppliedUser + "))";
        System.DirectoryServices.DirectorySearcher ldapSearch = new System.DirectoryServices.DirectorySearcher(dirEntry);
        ldapSearch.ServerTimeLimit = new TimeSpan(0, 0, 30);


        ldapSearch.Filter = strLDAPFilter;
        ldapSearch.SearchScope = System.DirectoryServices.SearchScope.Subtree;

        System.DirectoryServices.SearchResultCollection searchResults = ldapSearch.FindAll();


        if (searchResults.Count == 1)
        {
        string strLogonUserBase = searchResults[0].GetDirectoryEntry().Path;
        // get rid of strLDAPServer from directory entry path
        string strLogonUserFQDN = strLogonUserBase.Replace(strLDAPServer, "");
        dirEntry.Close();

        // Attempt to bind as the user
        System.DirectoryServices.DirectoryEntry userAuthAttempt = new System.DirectoryServices.DirectoryEntry();
        userAuthAttempt.Path = strLDAPUserHost;
        userAuthAttempt.Username = strLogonUserFQDN;
        userAuthAttempt.Password = strSuppliedPwd;
        //userAuthAttempt.AuthenticationType = System.DirectoryServices.AuthenticationTypes.None;
        userAuthAttempt.AuthenticationType = System.DirectoryServices.AuthenticationTypes.SecureSocketsLayer;
        try
        {
            userAuthAttempt.RefreshCache();
            userAuthAttempt.Close();
            strResults = "<td><font color='green'>User " + UserName.Value + " has authenticated successfully.</font></td>";
        }
        catch (Exception e)
        {
            string strAuthError = e.Message;
            string strLockedOut = "A constraint violation occurred.\r\n";
            string strBadPwd = "Logon failure: unknown user name or bad password.\r\n";
            string strNSAccountLock = "The server is unwilling to process the request.\r\n";
            if (String.Compare(strAuthError, strBadPwd) == 0)
                strResults = "<td><font color='red'>Logon failure for user " + UserName.Value + " - password is invalid.</font></td></tr>"; ;
            }
            else if (String.Compare(strAuthError, strLockedOut) == 0)
            {
            strResults = "<td><font color='red'>Logon failure for user " + UserName.Value + " - account is locked out.</font></td>"; ;
            }
            else if (String.Compare(strAuthError, strNSAccountLock) == 0)
            {
            strResults = "<td><font color='red'>Logon failure for user " + UserName.Value + " - password has expired.</font></td>"; ;
            }
            else
            {
            strResults = "<td><font color='red'>Logon failure for user " + UserName.Value + " (" + strLogonUserFQDN + ") :" + strAuthError + "</font></td>"; ;
            }
        }
        }
        else if (searchResults.Count > 1)
        {
        strResults = "<td><font color='red'>Account " + UserName.Value + " was found in the directory " + searchResults.Count + " times. Please contact the Help Desk to have this issue corrected.</font></td>"; ;
        }
        else
        {
        strResults = "<td><font color='red'>Account " + UserName.Value + " was not found in the directory.</font></td>"; ;
        }
        return strResults;
    }
    catch(Exception e)
    {
        string strAuthError = e.Message;
        string strConnectFail = "The server is not operational.\r\n";
        if (String.Compare(strAuthError, strConnectFail) == 0)
        {
        strResults = "<td><font color='red'>Transient connection failure, please try again.</font></td>"; ;
        }
        else
        {
        strResults = "<td><font color='red'>Transient failure (" + strAuthError + "), please try again.</font></td>";
        }
        return strResults;
    }
}
21
задан JaredPar 5 April 2009 в 15:40
поделиться

16 ответов

Я думаю, что изучение языка не является трудным. На самом деле я раньше был полностью занятым разработчиком C++, и в какой-то момент я начал писать код Java. Но вещь состоит в том, что я не помню когда-либо изучать Java, таким образом, я предполагаю, что просто изобразил его, когда я пошел. Я делал полностью занятый Java в течение долгого времени теперь.

Если Вы хорошо знакомы с C++, можно хотеть прочитать список существенных различий (например, все динамично ограничено), и затем начните практиковать на среде (просто загружают Eclipse). Небольшими различиями является главное, к которому Вы должны были бы быть скорректированы.

Теперь, когда Java поддерживает дженерики, одной из сильных болей переключения не стало. Множественное наследование, в то время как не поддерживаемый, не является грандиозным предприятием, если Вы привыкаете к интерфейсам, и на самом деле имеющие интерфейсы, а не абстрактные классы с чистыми виртуальными функциями (PVFs) улучшают удобочитаемость.

Мне Java является хорошей и дружественной и расслабляющей поигравшей в песочнице версией C++. Я не должен волноваться об общих нарушениях защиты (GPFs), я не должен волноваться об утечках памяти, я не должен волноваться о питании с указателями. Однако не позволяйте этому смутить Вас, существует все еще много возможностей завинтить по-царски, и они иногда еще более противны для обнаружения.

Просто возьмите прыжок. Если у Вас есть инстинкт, это не должна быть проблема.

19
ответ дан 29 November 2019 в 06:52
поделиться

Не должен брать Вас больше чем день или два для изучения языка, но Вам, возможно, придется провести несколько недель на библиотеку классов: как использовать наборы, concurreny пакет, отражение, вход, swing/awt, динамические прокси, MBeans и т.д.

0
ответ дан 29 November 2019 в 06:52
поделиться

Я запустил с C++ и изучил C#/.NET. Это не заняло много времени. Поскольку C#/.NET разрабатывается очень близко к Java (они использовали многие основные методы Java, такие как GC, классы ссылки, JIT...), я думаю не то, чтобы трудно изучить Java.

0
ответ дан 29 November 2019 в 06:52
поделиться

У меня есть фон C++. Взятие Java взяло меня несколько дней - язык кажется действительно простым - по крайней мере, его основа. Я все еще консультируюсь со своим гуру Java - Google вполне немного, но это обычно - вопрос исследования API и стандартных библиотек. Java имеет некоторые раздражения, но необходимо определить большинство из них их легко и быстро.

Мне рекомендовали, Думая в Java (существует электронная книга бесплатно), но никогда не было достаточно персистентным для прочтения его. Я не пишу код аэрокосмических исследований в Java и сделать это, мои навыки достаточны.

Однако было бы хорошо иметь лучше формальное знание языка. В данный момент я думаю об изучении для SCJP, который кажется, что разумный способ учиться, плюс Вы получит хорошо-recoginized сертификат программирования, после того как Вы передаете его (я услышал, что это не стоит очень, но тем не менее это может быть мотивация...).

Можно также попробовать Черный пояс Java - ответы frequenty удивляют меня. После взятия немногих тестов интересно, как мои программы даже компилируют, который предполагает, что я - вероятно, не самый компетентный программист Java вокруг :)

0
ответ дан 29 November 2019 в 06:52
поделиться

Я также изучил C++ сначала и затем Java. Потребовалось очень меньше времени, когда я был уже знаком с понятиями OOPS. В начальной фазе изучения я был действительно доволен новыми понятиями в Jave как сборщик "мусора". Я отослал Полную Ссылку Herbert Schildt, и она действительно помогала мне получить синтаксис быстро.

0
ответ дан 29 November 2019 в 06:52
поделиться

Я думаю, что существует два подхода к значению термина "компетентный программист Java". Если это о лексемах, синтаксисе и условиях ООП, я начал к completly, понимают Java перед 2 (двумя) днями изучения. Но во-первых Вы будете очарованы невозможностью стрелять в Ваш собственный участок ;) Но если это - случай встроенной системы классов (т.е. пакеты), ссылки API, подсказки-и-приемы и и т.д., это берет о семестре для чувства себя дружественный по отношению к Java. Я думаю.

0
ответ дан 29 November 2019 в 06:52
поделиться

Я пошел бы с шестью - восемью неделями.

0
ответ дан 29 November 2019 в 06:52
поделиться

В эти дни язык программирования получает большую часть своего питания из его библиотек и принятых идиом.

В то время как требуется относительно короткое время, чтобы узнать, что язык Java, учась пользоваться доступными библиотеками (наборы, io, и т.д.) эффективно, вероятно, займет значительно больше времени.

1
ответ дан 29 November 2019 в 06:52
поделиться

Я знаю C++, и должен был работать с Java однажды и взял его за 2 недели. Конечно, было довольно много неожиданностей, но это легко.

1
ответ дан 29 November 2019 в 06:52
поделиться

Назад в 1995, когда я сделал это, это взяло меня о половине дня для получения довольным инструментами и основными идеями, день или два, чтобы заставить язык, неделя получать более неясные части языка (было меньше из них в то время), и месяц для получения библиотек (был ПУТЬ меньше из них в то время).

Теперь я предположил бы, что инструменты и язык Бэйсик возьмут в качестве большого количества времени, несколько недель к месяцу для неясных частей языка (зависит, на каких частях Вы совершаете нападки, и когда). Основные библиотеки будут месяцем к двум месяцам (java.lang, java.util, и немногие другие). Остающиеся библиотеки классов 6 месяцев к навсегда в зависимости от того, что необходимо изучить и как часто содержание, обновляющее их :-)

2
ответ дан 29 November 2019 в 06:52
поделиться

Как Tom Hawtin записал, ключевой вопрос - то, как Вы определяете компетентный.

Вы сможете к погрузке язык довольно легко, но это - идиомы и библиотеки, которые необходимо будет изучить. И существует довольно много различий между нишами, Вы работаете в (например, встроенный или предприятие), и между библиотеками, которые, предположительно, решают те же проблемы. Вот несколько примеров:

  1. В бизнесе/корпоративных приложениях Вы обычно работаете с базами данных. Там Вы можете иметь:

    • простой JDBC
    • Картопостроитель SQL (iBatis), обертка вокруг подробного и повторяющегося JDBC
    • Решение ORM (В спящем режиме) с философией самой по себе
  2. С настольным UIs у Вас есть две конкурирующих платформы:

    • Swing, часть JRE
    • SWT/JFace, от основы Eclispe, порожденной IBM, с собственной поддержкой UI
  3. Веб-платформы - слишком многие для упоминания, с различными идеями представить UI, конфигурацию, структура папки/пакета и т.д.

  4. DI (внедрение зависимости) распространен в бизнес-приложениях, или сторонними платформами как Spring, или как часть стандарта EJB3. Но, я не думаю, что это когда-либо используется во встроенной установке.

Справедливости ради стоило бы отметить, это - просто верхушка айсберга.

4
ответ дан 29 November 2019 в 06:52
поделиться

C++ к Java: 1 неделя. Java к C++: 1 месяц.

4
ответ дан 29 November 2019 в 06:52
поделиться

Если Вы уже - компетентный программист (особенно в C++) затем, Java не занимает много времени учиться вообще. Книги, которые я рекомендовал бы (в порядке) для любого, кто хочет изучить Java:

Можно найти, что Вы архивируете через Главный Первый Java скорее быстро, учитывая Ваш опыт. По этой причине я предлагаю, чтобы Вы проверили его из библиотеки и просмотрели его перед хождением дальше к Размышлению в Java.

Также проверьте Учебные руководства по Java Sun.

5
ответ дан 29 November 2019 в 06:52
поделиться

Я пошел противоположным путем. Запущенный с Java, затем перемещенного в C и C++. Для моего собственного личного опыта было намного легче изучить Java, чем C/C++ (C++ особенно).

Java во многих отношениях предназначен, чтобы быть C++ со многими неопределенными и излишне сложными частями, удаленными или упрощенными. По моему скромному мнению, это имело большой успех с той целью. В результате это - очень легкий язык, чтобы изучить и использовать. Специально для кого-то, кто знаком с C++.

Фактическое время, которое потребуется, очень зависит от человека, учащего язык. Однако я думаю, смело можно сказать, что потребуется меньше времени для становления компетентным в Java, чем это сделало в C++.

8
ответ дан 29 November 2019 в 06:52
поделиться

Не должно быть слишком плохим. Синтаксис и классы должны быть очень легки для Вас схватить. Существуют некоторые различия, но ни один из него не слишком сложен.

Самая твердая часть больше об изучении пакетов, так как они будут отличаться. Созданный в классах Java и функциях, и затем использовать Java практическим способом, необходимо будет изучить J2EE или независимо от того, что Вы могли бы на самом деле использовать его для. Последняя часть, вероятно, займет больше Вашего времени, чем сам язык.

9
ответ дан 29 November 2019 в 06:52
поделиться

Как Вы определили бы компетентный? За мои деньги самые профессиональные (как в они делают это за деньги), программистам Java никогда не удается достигнуть компетентный.

1
ответ дан 29 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: