Почему являются Java на Сервере и C# на Клиенте популярным выбором?

РЕДАКТИРОВАТЬ: Согласно комментариям @kent и @tripleee sir, я забочусь о нескольких экземплярах в одной строке суммы строк +, если кто-то awk НЕ поддерживает nextfile Я создаю флаг типа no_processing, который будет просто пропускать строки, если он TRUE (после просмотра 2 экземпляров строки в любом файле).

awk 'FNR==1{count=0;no_processing=""} no_processing{next} {count+=gsub("Numero de expediente","")} count==2{print FILENAME;no_processing=1}' *.txt

ИЛИ (форма решения не с одним вкладышем)

awk '
FNR==1{
  count=0
  no_processing=""
}
no_processing{
  next
}
{
  count+=gsub("Numero de expediente","")
}
count==2{
  print FILENAME
  no_processing=1
}
' *.txt


Не могли бы вы попробовать следующее, следует работать с GNU awk.

awk 'FNR==1{count=0} /Numero de expediente/{count++} count==2{print FILENAME " has at least 2 instances of searched string in it.";nextfile}' *.txt

Выше будет напечатано, например, -> test.txt has at least 2 instances of string in it. Если вы хотите просто напечатать имена файлов, попробуйте выполнить следующее.

awk 'FNR==1{count=0} /Numero de expediente/{count++} count==2{print FILENAME;nextfile}' *.txt

Объяснение: Добавление пояснения к приведенному выше коду сейчас.

awk '                          ##Starting awk program here.
FNR==1{                        ##Checking condition FNR==1 which will check if this is a 1st line for any new Input_file(since we are reading multiple Input_files from awk in this code).
  count=0                      ##Setting value of variable count as ZERO here.
}                              ##Closing BLOCK for FNR condition here.
/Numero de expediente/{        ##Checking condition here if a line contains string Numero de expediente in it then do following.
  count++                      ##Incrementing variable named count value with 1 here.
}                              ##Closing BLOCK for string checking condition here.
count==2{                      ##Checking condition if variable count value is 2 then do following.
  print FILENAME               ##Printing Input_file name here, where FILENAME is out of the box awk variable contains current Input_file name in it.
  nextfile                     ##nextfile will skip current Input_file, since we got 2 instances so need NOT to read this Input_file as per OP requirement and SAVE some time here.
}                              ##Closing BLOCK for count condition here.
' *.txt                        ##Mentioning *.txt which will pass all .txt extension files to it.
5
задан Simon P 25 April 2009 в 07:47
поделиться

8 ответов

Java часто используется в бэкэнде (и стал стандартом де-факто) по ряду причин:

  • Java может прозрачно работать в различных операционных системах из разработки Windows рабочие станции для выделенных серверов Unix.
  • Java применяет модульный, объектно-ориентированный подход к кодированию, который позволяет писать (как мы надеемся) крупномасштабные системы, не становясь неуправляемыми. (это также верно для C # /. NET, но не верно для других внутренних языков, таких как Perl или Python).
  • Java часто используется в серверных системах (более популярный язык для конкретного приложения, скорее всего, в этом языке есть зрелые библиотеки и инструменты для этого конкретного приложения)

В C # есть отличные инструменты и библиотеки для разработки пользовательских интерфейсов в Windows. Ява'

16
ответ дан 18 December 2019 в 06:23
поделиться

Ну, во многих случаях .NET используется на обоих концах (и я бы предположил, что то же самое для Java). Но я предполагаю, что мотивация Java-сервера / .NET-клиента заключается в том, что приложение ориентировано на Unix в качестве серверной ОС, либо по соображениям стоимости или надежности, либо потому, что оно должно вписываться в существующую среду сервера Unix (например, работающее тесно связан с существующими приложениями Unix), но ориентирован на Windows в качестве клиентской платформы. (Я думаю, что Java, вероятно, встречается гораздо реже, когда Windows также используется в качестве серверной платформы; хотя нет никаких подтверждений этому.)

Если предполагается ОС Unix-сервера, то Java - очень продуктивный выбор, хорошо поддерживаемый с большим количеством библиотек, но с большей базой разработчиков (по крайней мере, в «корпоративных» средах) и большим «управленческим» распознаванием, чем альтернативы, такие как Perl, Ruby или Python.

И наоборот, .NET лучше подходит для клиента Windows, потому что он имеет гораздо лучшую поддержку для создания Windows GUI. Это не просто инструмент: сами API-интерфейсы Java GUI (например, Swing), как правило, предпочитают кросс-платформенное сходство, а не внешний вид и поведение, и поэтому приводят к тому, что приложения не выглядят или ведут себя как приложения Windows. (Я немного обобщаю здесь - извините!)

5
ответ дан 18 December 2019 в 06:23
поделиться

Что касается Java, то две вещи

  1. Linux. Это надежно и дешево. Одна из многих причин, по которой предприятия используют Linux для Java, заключается в том, что им не нужно перезагружать блоки после вторника исправлений.
  2. Hotspot. Это одно из чудес современного мира - потрясающая производительность.
0
ответ дан 18 December 2019 в 06:23
поделиться

Форматы обмена данными, такие как JSON, делают гораздо менее важным, чтобы системы по обе стороны соединения были одинаковыми технологиями низкого уровня.

Java - это очень хорошо протестированный и поддерживаемый язык для серверов, в то время как C # имеет отличные инструменты для создания GUI.

2
ответ дан 18 December 2019 в 06:23
поделиться

Most servers are either Windows or *nix based. So at the server, either Java or .NET/C# (via mono on *nix) would be perfectly good.

Java has better support for different client devices, but in many ways that requirement is being replaces by the much better HTML support at most clients - at least for online devices.

For a installed client application, then arguably Java has the better portability - but with things like Compact Framework, Micro Framework, Silverlight, etc .NET is catching up.

Personally (due to job role), I care mainly what is at the server; .NET/C# has never let me down - but I'm not a Java developer, so I can't contrast directly. From work on open source projects I know there is a good community of people out there using mono on the server.

At the client, tools like WPF offer a first rate GUI experience, with .NET's support for winforms being useful for regular windows apps. But since a lot of the WPF architectureis common with Silverlight (with Moonlight as the mono twin for *nix etc), this allows the experience to be used on non-Windows clients too.

0
ответ дан 18 December 2019 в 06:23
поделиться

Java is considered more mature, which is a good attribute for a server, whereas C# has better integration with/similar look and feel to windows and office (which the clients like)

2
ответ дан 18 December 2019 в 06:23
поделиться

Fortyrunner, я не видел ни одного эталона, где JVM с горячей точкой будет побеждать MS CLR.

0
ответ дан 18 December 2019 в 06:23
поделиться

На стороне сервера Java доказала свою надежность и масштабируемость и доступна на платформах, о которых .NET может только мечтать. Следовательно, если вам нужен самый широкий выбор аппаратного обеспечения, Java является отличным выбором - сюда входят очень большие машины с множеством процессоров, а также множество кластерных дешевых коробок x86.

Если у вас есть .NET на стороне сервера, вы должны использовать Windows, а Windows просто плохо масштабируется с точки зрения аппаратного обеспечения.

0
ответ дан 18 December 2019 в 06:23
поделиться